tint/writer/spirv: Inline constant expressions

This is required to handle materialized values, and for constant
expressions.

Bug: tint:1504
Change-Id: If0a49e9b03566c06aa6e4e4c284fc427e1541e91
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/92082
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
This commit is contained in:
Ben Clayton 2022-06-01 15:57:22 +00:00 committed by Dawn LUCI CQ
parent 609ce6de8d
commit 8e3485248e
242 changed files with 10432 additions and 10031 deletions

View File

@ -27,6 +27,7 @@
#include "src/tint/sem/atomic.h" #include "src/tint/sem/atomic.h"
#include "src/tint/sem/builtin.h" #include "src/tint/sem/builtin.h"
#include "src/tint/sem/call.h" #include "src/tint/sem/call.h"
#include "src/tint/sem/constant.h"
#include "src/tint/sem/depth_multisampled_texture.h" #include "src/tint/sem/depth_multisampled_texture.h"
#include "src/tint/sem/depth_texture.h" #include "src/tint/sem/depth_texture.h"
#include "src/tint/sem/function.h" #include "src/tint/sem/function.h"
@ -406,6 +407,11 @@ bool Builder::GenerateLabel(uint32_t id) {
bool Builder::GenerateAssignStatement(const ast::AssignmentStatement* assign) { bool Builder::GenerateAssignStatement(const ast::AssignmentStatement* assign) {
if (assign->lhs->Is<ast::PhonyExpression>()) { if (assign->lhs->Is<ast::PhonyExpression>()) {
if (builder_.Sem().Get(assign->rhs)->ConstantValue()) {
// RHS of phony assignment is constant.
// Constants can't have side-effects, so just drop this.
return true;
}
auto rhs_id = GenerateExpression(assign->rhs); auto rhs_id = GenerateExpression(assign->rhs);
if (rhs_id == 0) { if (rhs_id == 0) {
return false; return false;
@ -566,8 +572,14 @@ bool Builder::GenerateExecutionModes(const ast::Function* func, uint32_t id) {
} }
uint32_t Builder::GenerateExpression(const ast::Expression* expr) { uint32_t Builder::GenerateExpression(const ast::Expression* expr) {
if (auto* sem = builder_.Sem().Get(expr)) {
if (auto constant = sem->ConstantValue()) {
return GenerateConstantIfNeeded(constant);
}
}
return Switch( return Switch(
expr, [&](const ast::IndexAccessorExpression* a) { return GenerateAccessorExpression(a); }, expr, //
[&](const ast::IndexAccessorExpression* a) { return GenerateAccessorExpression(a); },
[&](const ast::BinaryExpression* b) { return GenerateBinaryExpression(b); }, [&](const ast::BinaryExpression* b) { return GenerateBinaryExpression(b); },
[&](const ast::BitcastExpression* b) { return GenerateBitcastExpression(b); }, [&](const ast::BitcastExpression* b) { return GenerateBitcastExpression(b); },
[&](const ast::CallExpression* c) { return GenerateCallExpression(c); }, [&](const ast::CallExpression* c) { return GenerateCallExpression(c); },
@ -743,7 +755,15 @@ bool Builder::GenerateGlobalVariable(const ast::Variable* var) {
uint32_t init_id = 0; uint32_t init_id = 0;
if (var->constructor) { if (var->constructor) {
init_id = GenerateConstructorExpression(var, var->constructor); if (!var->is_overridable) {
auto* ctor = builder_.Sem().Get(var->constructor);
if (auto constant = ctor->ConstantValue()) {
init_id = GenerateConstantIfNeeded(std::move(constant));
}
}
if (init_id == 0) {
init_id = GenerateConstructorExpression(var, var->constructor);
}
if (init_id == 0) { if (init_id == 0) {
return false; return false;
} }
@ -1662,6 +1682,116 @@ uint32_t Builder::GenerateLiteralIfNeeded(const ast::Variable* var,
return GenerateConstantIfNeeded(constant); return GenerateConstantIfNeeded(constant);
} }
uint32_t Builder::GenerateConstantIfNeeded(const sem::Constant& constant) {
if (constant.AllZero()) {
return GenerateConstantNullIfNeeded(constant.Type());
}
static constexpr size_t kOpsResultIdx = 1; // operand index of the result
auto& global_scope = scope_stack_[0];
auto gen_bool = [&](size_t element_idx) {
bool val = constant.Element<AInt>(element_idx);
return GenerateConstantIfNeeded(ScalarConstant::Bool(val));
};
auto gen_f32 = [&](size_t element_idx) {
auto val = f32(constant.Element<AFloat>(element_idx));
return GenerateConstantIfNeeded(ScalarConstant::F32(val.value));
};
auto gen_i32 = [&](size_t element_idx) {
auto val = i32(constant.Element<AInt>(element_idx));
return GenerateConstantIfNeeded(ScalarConstant::I32(val.value));
};
auto gen_u32 = [&](size_t element_idx) {
auto val = u32(constant.Element<AInt>(element_idx));
return GenerateConstantIfNeeded(ScalarConstant::U32(val.value));
};
auto gen_els = [&](std::vector<Operand>& ids, size_t start, size_t end, auto gen_el) {
for (size_t i = start; i < end; i++) {
auto id = gen_el(i);
if (!id) {
return false;
}
ids.emplace_back(id);
}
return true;
};
auto gen_vector = [&](const sem::Vector* ty, size_t start, size_t end) -> uint32_t {
auto type_id = GenerateTypeIfNeeded(ty);
if (!type_id) {
return 0;
}
std::vector<Operand> ops;
ops.reserve(end - start + 2);
ops.emplace_back(type_id);
ops.push_back(Operand(0u)); // Placeholder for the result ID
auto ok = Switch(
constant.ElementType(), //
[&](const sem::Bool*) { return gen_els(ops, start, end, gen_bool); }, //
[&](const sem::F32*) { return gen_els(ops, start, end, gen_f32); }, //
[&](const sem::I32*) { return gen_els(ops, start, end, gen_i32); }, //
[&](const sem::U32*) { return gen_els(ops, start, end, gen_u32); }, //
[&](Default) {
error_ = "unhandled constant element type: " + builder_.FriendlyName(ty);
return false;
});
if (!ok) {
return 0;
}
return utils::GetOrCreate(global_scope.type_ctor_to_id_, OperandListKey{ops},
[&]() -> uint32_t {
auto result = result_op();
ops[kOpsResultIdx] = result;
push_type(spv::Op::OpConstantComposite, std::move(ops));
return std::get<uint32_t>(result);
});
};
auto gen_matrix = [&](const sem::Matrix* m) -> uint32_t {
auto mat_type_id = GenerateTypeIfNeeded(m);
if (!mat_type_id) {
return 0;
}
std::vector<Operand> ops;
ops.reserve(m->columns() + 2);
ops.emplace_back(mat_type_id);
ops.push_back(Operand(0u)); // Placeholder for the result ID
for (size_t column_idx = 0; column_idx < m->columns(); column_idx++) {
size_t start = m->rows() * column_idx;
size_t end = m->rows() * (column_idx + 1);
auto column_id = gen_vector(m->ColumnType(), start, end);
if (!column_id) {
return 0;
}
ops.emplace_back(column_id);
}
return utils::GetOrCreate(global_scope.type_ctor_to_id_, OperandListKey{ops},
[&]() -> uint32_t {
auto result = result_op();
ops[kOpsResultIdx] = result;
push_type(spv::Op::OpConstantComposite, std::move(ops));
return std::get<uint32_t>(result);
});
};
return Switch(
constant.Type(), //
[&](const sem::Bool*) { return gen_bool(0); }, //
[&](const sem::F32*) { return gen_f32(0); }, //
[&](const sem::I32*) { return gen_i32(0); }, //
[&](const sem::U32*) { return gen_u32(0); }, //
[&](const sem::Vector* v) { return gen_vector(v, 0, constant.ElementCount()); }, //
[&](const sem::Matrix* m) { return gen_matrix(m); }, //
[&](Default) {
error_ = "unhandled constant type: " + builder_.FriendlyName(constant.Type());
return false;
});
}
uint32_t Builder::GenerateConstantIfNeeded(const ScalarConstant& constant) { uint32_t Builder::GenerateConstantIfNeeded(const ScalarConstant& constant) {
auto it = const_to_id_.find(constant); auto it = const_to_id_.find(constant);
if (it != const_to_id_.end()) { if (it != const_to_id_.end()) {
@ -2174,12 +2304,7 @@ bool Builder::GenerateBlockStatementWithoutScoping(const ast::BlockStatement* st
} }
uint32_t Builder::GenerateCallExpression(const ast::CallExpression* expr) { uint32_t Builder::GenerateCallExpression(const ast::CallExpression* expr) {
auto* sem = builder_.Sem().Get(expr); auto* call = builder_.Sem().Get<sem::Call>(expr);
if (auto* m = sem->As<sem::Materialize>()) {
// TODO(crbug.com/tint/1504): Just emit the constant value.
sem = m->Expr();
}
auto* call = sem->As<sem::Call>();
auto* target = call->Target(); auto* target = call->Target();
return Switch( return Switch(
target, [&](const sem::Function* func) { return GenerateFunctionCall(call, func); }, target, [&](const sem::Function* func) { return GenerateFunctionCall(call, func); },
@ -2936,10 +3061,9 @@ bool Builder::GenerateTextureBuiltin(const sem::Call* call,
} }
spirv_params.emplace_back(gen_arg(Usage::kDepthRef)); spirv_params.emplace_back(gen_arg(Usage::kDepthRef));
ast::FloatLiteralExpression float_0(ProgramID(), Source{}, 0.0, image_operands.emplace_back(
ast::FloatLiteralExpression::Suffix::kF); ImageOperand{SpvImageOperandsLodMask,
image_operands.emplace_back(ImageOperand{ Operand(GenerateConstantIfNeeded(ScalarConstant::F32(0.0)))});
SpvImageOperandsLodMask, Operand(GenerateLiteralIfNeeded(nullptr, &float_0))});
break; break;
} }
default: default:

View File

@ -43,6 +43,7 @@
// Forward declarations // Forward declarations
namespace tint::sem { namespace tint::sem {
class Call; class Call;
class Constant;
class Reference; class Reference;
class TypeConstructor; class TypeConstructor;
class TypeConversion; class TypeConversion;
@ -550,6 +551,11 @@ class Builder {
/// @param expr the expression /// @param expr the expression
const sem::Type* TypeOf(const ast::Expression* expr) const { return builder_.TypeOf(expr); } const sem::Type* TypeOf(const ast::Expression* expr) const { return builder_.TypeOf(expr); }
/// Generates a constant value if needed
/// @param constant the constant to generate.
/// @returns the ID on success or 0 on failure
uint32_t GenerateConstantIfNeeded(const sem::Constant& constant);
/// Generates a scalar constant if needed /// Generates a scalar constant if needed
/// @param constant the constant to generate. /// @param constant the constant to generate.
/// @returns the ID on success or 0 on failure /// @returns the ID on success or 0 on failure

View File

@ -326,7 +326,7 @@ TEST_F(BuilderTest, MemberAccessor_NonPointer) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32 EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeStruct %2 %2 %1 = OpTypeStruct %2 %2
%3 = OpConstant %2 0 %3 = OpConstantNull %2
%4 = OpConstantComposite %1 %3 %3 %4 = OpConstantComposite %1 %3 %3
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
@ -367,7 +367,7 @@ TEST_F(BuilderTest, MemberAccessor_Nested_NonPointer) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32 EXPECT_EQ(DumpInstructions(b.types()), R"(%3 = OpTypeFloat 32
%2 = OpTypeStruct %3 %3 %2 = OpTypeStruct %3 %3
%1 = OpTypeStruct %2 %1 = OpTypeStruct %2
%4 = OpConstant %3 0 %4 = OpConstantNull %3
%5 = OpConstantComposite %2 %4 %4 %5 = OpConstantComposite %2 %4 %4
%6 = OpConstantComposite %1 %5 %6 = OpConstantComposite %1 %5
)"); )");
@ -729,7 +729,7 @@ TEST_F(BuilderTest, IndexAccessor_Mixed_ArrayAndMember) {
%2 = OpTypePointer Function %3 %2 = OpTypePointer Function %3
%13 = OpConstantNull %3 %13 = OpConstantNull %3
%14 = OpTypeInt 32 1 %14 = OpTypeInt 32 1
%15 = OpConstant %14 0 %15 = OpConstantNull %14
%16 = OpConstant %10 0 %16 = OpConstant %10 0
%17 = OpConstant %14 2 %17 = OpConstant %14 2
%18 = OpTypePointer Function %8 %18 = OpTypePointer Function %8
@ -916,7 +916,7 @@ TEST_F(BuilderTest, IndexAccessor_Array_Literal) {
%7 = OpTypeInt 32 0 %7 = OpTypeInt 32 0
%8 = OpConstant %7 3 %8 = OpConstant %7 3
%5 = OpTypeArray %6 %8 %5 = OpTypeArray %6 %8
%9 = OpConstant %6 0 %9 = OpConstantNull %6
%10 = OpConstant %6 0.5 %10 = OpConstant %6 0.5
%11 = OpConstant %6 1 %11 = OpConstant %6 1
%12 = OpConstantComposite %5 %9 %10 %11 %12 = OpConstantComposite %5 %9 %10 %11
@ -954,7 +954,7 @@ TEST_F(BuilderTest, IndexAccessor_Array_Dynamic) {
%7 = OpTypeInt 32 0 %7 = OpTypeInt 32 0
%8 = OpConstant %7 3 %8 = OpConstant %7 3
%5 = OpTypeArray %6 %8 %5 = OpTypeArray %6 %8
%9 = OpConstant %6 0 %9 = OpConstantNull %6
%10 = OpConstant %6 0.5 %10 = OpConstant %6 0.5
%11 = OpConstant %6 1 %11 = OpConstant %6 1
%12 = OpConstantComposite %5 %9 %10 %11 %12 = OpConstantComposite %5 %9 %10 %11

View File

@ -98,7 +98,7 @@ TEST_F(BuilderTest, Assign_Var_ZeroConstructor) {
)"); )");
} }
TEST_F(BuilderTest, Assign_Var_Complex_ConstructorWithExtract) { TEST_F(BuilderTest, Assign_Var_Complex_ConstructorNestedVector) {
auto* init = vec3<f32>(vec2<f32>(1_f, 2_f), 3_f); auto* init = vec3<f32>(vec2<f32>(1_f, 2_f), 3_f);
auto* v = Global("var", ty.vec3<f32>(), ast::StorageClass::kPrivate); auto* v = Global("var", ty.vec3<f32>(), ast::StorageClass::kPrivate);
@ -121,17 +121,13 @@ TEST_F(BuilderTest, Assign_Var_Complex_ConstructorWithExtract) {
%2 = OpTypePointer Private %3 %2 = OpTypePointer Private %3
%5 = OpConstantNull %3 %5 = OpConstantNull %3
%1 = OpVariable %2 Private %5 %1 = OpVariable %2 Private %5
%6 = OpTypeVector %4 2 %6 = OpConstant %4 1
%7 = OpConstant %4 1 %7 = OpConstant %4 2
%8 = OpConstant %4 2 %8 = OpConstant %4 3
%9 = OpConstantComposite %6 %7 %8 %9 = OpConstantComposite %3 %6 %7 %8
%12 = OpConstant %4 3
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(%10 = OpCompositeExtract %4 %9 0 R"(OpStore %1 %9
%11 = OpCompositeExtract %4 %9 1
%13 = OpCompositeConstruct %3 %10 %11 %12
OpStore %1 %13
)"); )");
} }

View File

@ -264,7 +264,7 @@ TEST_P(BinaryOperatorBoolTest, Scalar) {
EXPECT_EQ(b.GenerateBinaryExpression(expr), 4u) << b.error(); EXPECT_EQ(b.GenerateBinaryExpression(expr), 4u) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%1 = OpTypeBool EXPECT_EQ(DumpInstructions(b.types()), R"(%1 = OpTypeBool
%2 = OpConstantTrue %1 %2 = OpConstantTrue %1
%3 = OpConstantFalse %1 %3 = OpConstantNull %1
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
"%4 = " + param.name + " %1 %2 %3\n"); "%4 = " + param.name + " %1 %2 %3\n");
@ -724,7 +724,7 @@ TEST_F(BuilderTest, Binary_LogicalAnd_WithLoads) {
%3 = OpConstantTrue %2 %3 = OpConstantTrue %2
%5 = OpTypePointer Private %2 %5 = OpTypePointer Private %2
%4 = OpVariable %5 Private %3 %4 = OpVariable %5 Private %3
%6 = OpConstantFalse %2 %6 = OpConstantNull %2
%7 = OpVariable %5 Private %6 %7 = OpVariable %5 Private %6
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
@ -761,7 +761,7 @@ TEST_F(BuilderTest, Binary_logicalOr_Nested_LogicalAnd) {
EXPECT_EQ(b.GenerateBinaryExpression(expr), 10u) << b.error(); EXPECT_EQ(b.GenerateBinaryExpression(expr), 10u) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool
%3 = OpConstantTrue %2 %3 = OpConstantTrue %2
%8 = OpConstantFalse %2 %8 = OpConstantNull %2
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(%1 = OpLabel R"(%1 = OpLabel
@ -801,7 +801,7 @@ TEST_F(BuilderTest, Binary_logicalAnd_Nested_LogicalOr) {
EXPECT_EQ(b.GenerateBinaryExpression(expr), 10u) << b.error(); EXPECT_EQ(b.GenerateBinaryExpression(expr), 10u) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool
%3 = OpConstantTrue %2 %3 = OpConstantTrue %2
%8 = OpConstantFalse %2 %8 = OpConstantNull %2
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(%1 = OpLabel R"(%1 = OpLabel
@ -877,7 +877,7 @@ TEST_F(BuilderTest, Binary_LogicalOr_WithLoads) {
%3 = OpConstantTrue %2 %3 = OpConstantTrue %2
%5 = OpTypePointer Private %2 %5 = OpTypePointer Private %2
%4 = OpVariable %5 Private %3 %4 = OpVariable %5 Private %3
%6 = OpConstantFalse %2 %6 = OpConstantNull %2
%7 = OpVariable %5 Private %6 %7 = OpVariable %5 Private %6
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),

View File

@ -589,7 +589,7 @@ OpCapability ImageQuery
%16 = OpConstant %4 2 %16 = OpConstant %4 2
%17 = OpConstantComposite %14 %15 %16 %17 = OpConstantComposite %14 %15 %16
%18 = OpTypeInt 32 1 %18 = OpTypeInt 32 1
%19 = OpConstant %18 0 %19 = OpConstantNull %18
)", )",
R"( R"(
%10 = OpLoad %7 %5 %10 = OpLoad %7 %5
@ -615,7 +615,7 @@ OpCapability ImageQuery
%16 = OpConstant %4 2 %16 = OpConstant %4 2
%17 = OpConstantComposite %14 %15 %16 %17 = OpConstantComposite %14 %15 %16
%18 = OpTypeInt 32 1 %18 = OpTypeInt 32 1
%19 = OpConstant %18 0 %19 = OpConstantNull %18
%20 = OpTypeVector %18 2 %20 = OpTypeVector %18 2
%21 = OpConstant %18 3 %21 = OpConstant %18 3
%22 = OpConstant %18 4 %22 = OpConstant %18 4
@ -645,7 +645,7 @@ OpCapability ImageQuery
%16 = OpConstant %4 2 %16 = OpConstant %4 2
%18 = OpTypeInt 32 1 %18 = OpTypeInt 32 1
%19 = OpConstant %18 3 %19 = OpConstant %18 3
%21 = OpConstant %18 0 %21 = OpConstantNull %18
)", )",
R"( R"(
%10 = OpLoad %7 %5 %10 = OpLoad %7 %5
@ -673,7 +673,7 @@ OpCapability ImageQuery
%16 = OpConstant %4 2 %16 = OpConstant %4 2
%18 = OpTypeInt 32 1 %18 = OpTypeInt 32 1
%19 = OpConstant %18 3 %19 = OpConstant %18 3
%21 = OpConstant %18 0 %21 = OpConstantNull %18
%22 = OpTypeVector %18 2 %22 = OpTypeVector %18 2
%23 = OpConstant %18 4 %23 = OpConstant %18 4
%24 = OpConstant %18 5 %24 = OpConstant %18 5
@ -706,7 +706,7 @@ OpCapability ImageQuery
%17 = OpConstant %4 3 %17 = OpConstant %4 3
%18 = OpConstantComposite %14 %15 %16 %17 %18 = OpConstantComposite %14 %15 %16 %17
%19 = OpTypeInt 32 1 %19 = OpTypeInt 32 1
%20 = OpConstant %19 0 %20 = OpConstantNull %19
)", )",
R"( R"(
%10 = OpLoad %7 %5 %10 = OpLoad %7 %5
@ -732,7 +732,7 @@ OpCapability ImageQuery
%16 = OpConstant %4 3 %16 = OpConstant %4 3
%18 = OpTypeInt 32 1 %18 = OpTypeInt 32 1
%19 = OpConstant %18 4 %19 = OpConstant %18 4
%21 = OpConstant %18 0 %21 = OpConstantNull %18
)", )",
R"( R"(
%10 = OpLoad %7 %5 %10 = OpLoad %7 %5

File diff suppressed because it is too large Load Diff

View File

@ -100,7 +100,7 @@ TEST_F(BuilderTest, GlobalVar_Complex_Constructor) {
)"); )");
} }
TEST_F(BuilderTest, GlobalVar_Complex_ConstructorWithExtract) { TEST_F(BuilderTest, GlobalVar_Complex_ConstructorNestedVector) {
auto* init = vec3<f32>(vec2<f32>(1_f, 2_f), 3_f); auto* init = vec3<f32>(vec2<f32>(1_f, 2_f), 3_f);
auto* v = GlobalConst("var", ty.vec3<f32>(), init); auto* v = GlobalConst("var", ty.vec3<f32>(), init);
@ -112,17 +112,10 @@ TEST_F(BuilderTest, GlobalVar_Complex_ConstructorWithExtract) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32 EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3 %1 = OpTypeVector %2 3
%3 = OpTypeVector %2 2 %3 = OpConstant %2 1
%4 = OpConstant %2 1 %4 = OpConstant %2 2
%5 = OpConstant %2 2 %5 = OpConstant %2 3
%6 = OpConstantComposite %3 %4 %5 %6 = OpConstantComposite %1 %3 %4 %5
%8 = OpTypeInt 32 0
%9 = OpConstant %8 0
%7 = OpSpecConstantOp %2 CompositeExtract %6 9
%11 = OpConstant %8 1
%10 = OpSpecConstantOp %2 CompositeExtract %6 11
%12 = OpConstant %2 3
%13 = OpSpecConstantComposite %1 %7 %10 %12
)"); )");
} }

View File

@ -223,7 +223,7 @@ TEST_F(BuilderTest, If_WithMultiple) {
%6 = OpConstantTrue %5 %6 = OpConstantTrue %5
%10 = OpConstant %3 2 %10 = OpConstant %3 2
%14 = OpConstant %3 3 %14 = OpConstant %3 3
%15 = OpConstantFalse %5 %15 = OpConstantNull %5
%19 = OpConstant %3 4 %19 = OpConstant %3 4
%20 = OpConstant %3 5 %20 = OpConstant %3 5
)"); )");
@ -472,7 +472,7 @@ TEST_F(BuilderTest, If_WithReturnValue) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool
%1 = OpTypeFunction %2 %1 = OpTypeFunction %2
%5 = OpConstantTrue %2 %5 = OpConstantTrue %2
%8 = OpConstantFalse %2 %8 = OpConstantNull %2
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(OpSelectionMerge %6 None R"(OpSelectionMerge %6 None
@ -542,7 +542,7 @@ TEST_F(BuilderTest, If_WithNestedBlockReturnValue) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool
%1 = OpTypeFunction %2 %1 = OpTypeFunction %2
%5 = OpConstantTrue %2 %5 = OpConstantTrue %2
%8 = OpConstantFalse %2 %8 = OpConstantNull %2
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(OpSelectionMerge %6 None R"(OpSelectionMerge %6 None
@ -600,7 +600,7 @@ TEST_F(BuilderTest, If_ElseIf_WithReturn) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
%1 = OpTypeFunction %2 %1 = OpTypeFunction %2
%5 = OpTypeBool %5 = OpTypeBool
%6 = OpConstantFalse %5 %6 = OpConstantNull %5
%10 = OpConstantTrue %5 %10 = OpConstantTrue %5
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
@ -638,7 +638,7 @@ TEST_F(BuilderTest, Loop_If_ElseIf_WithBreak) {
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeVoid
%1 = OpTypeFunction %2 %1 = OpTypeFunction %2
%9 = OpTypeBool %9 = OpTypeBool
%10 = OpConstantFalse %9 %10 = OpConstantNull %9
%14 = OpConstantTrue %9 %14 = OpConstantTrue %9
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),

View File

@ -79,7 +79,7 @@ TEST_F(BuilderTest, UnaryOp_Not) {
b.push_function(Function{}); b.push_function(Function{});
EXPECT_EQ(b.GenerateUnaryOpExpression(expr), 1u) << b.error(); EXPECT_EQ(b.GenerateUnaryOpExpression(expr), 1u) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeBool
%3 = OpConstantFalse %2 %3 = OpConstantNull %2
)"); )");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(%1 = OpLogicalNot %2 %3 R"(%1 = OpLogicalNot %2 %3

View File

@ -23,7 +23,6 @@
#include "src/tint/transform/canonicalize_entry_point_io.h" #include "src/tint/transform/canonicalize_entry_point_io.h"
#include "src/tint/transform/disable_uniformity_analysis.h" #include "src/tint/transform/disable_uniformity_analysis.h"
#include "src/tint/transform/expand_compound_assignment.h" #include "src/tint/transform/expand_compound_assignment.h"
#include "src/tint/transform/fold_constants.h"
#include "src/tint/transform/for_loop_to_loop.h" #include "src/tint/transform/for_loop_to_loop.h"
#include "src/tint/transform/manager.h" #include "src/tint/transform/manager.h"
#include "src/tint/transform/promote_side_effects_to_decl.h" #include "src/tint/transform/promote_side_effects_to_decl.h"
@ -73,7 +72,6 @@ SanitizedResult Sanitize(const Program* in, const Options& options) {
manager.Add<transform::PromoteSideEffectsToDecl>(); manager.Add<transform::PromoteSideEffectsToDecl>();
manager.Add<transform::UnwindDiscardFunctions>(); manager.Add<transform::UnwindDiscardFunctions>();
manager.Add<transform::SimplifyPointers>(); // Required for arrayLength() manager.Add<transform::SimplifyPointers>(); // Required for arrayLength()
manager.Add<transform::FoldConstants>();
manager.Add<transform::VectorizeScalarMatrixConstructors>(); manager.Add<transform::VectorizeScalarMatrixConstructors>();
manager.Add<transform::ForLoopToLoop>(); // Must come after manager.Add<transform::ForLoopToLoop>(); // Must come after
// ZeroInitWorkgroupMemory // ZeroInitWorkgroupMemory

View File

@ -34,7 +34,7 @@
%22 = OpConstantNull %_arr__arr_int_uint_4_uint_2 %22 = OpConstantNull %_arr__arr_int_uint_4_uint_2
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%int_0 = OpConstant %int 0 %28 = OpConstantNull %int
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
OpReturn OpReturn
@ -51,7 +51,7 @@
OpStore %dst %11 OpStore %dst %11
%27 = OpAccessChain %_ptr_Function__arr_int_uint_4 %dst_struct %uint_0 %27 = OpAccessChain %_ptr_Function__arr_int_uint_4 %dst_struct %uint_0
OpStore %27 %11 OpStore %27 %11
%29 = OpAccessChain %_ptr_Function__arr_int_uint_4 %dst_array %int_0 %29 = OpAccessChain %_ptr_Function__arr_int_uint_4 %dst_array %28
OpStore %29 %11 OpStore %29 %11
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -35,12 +35,12 @@
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %15 = OpConstantNull %int
%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S %_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
%main = OpFunction %void None %8 %main = OpFunction %void None %8
%11 = OpLabel %11 = OpLabel
%17 = OpAccessChain %_ptr_StorageBuffer_S %out %uint_0 %int_0 %17 = OpAccessChain %_ptr_StorageBuffer_S %out %uint_0 %15
%18 = OpAccessChain %_ptr_StorageBuffer_S %in %uint_0 %int_0 %18 = OpAccessChain %_ptr_StorageBuffer_S %in %uint_0 %15
%19 = OpLoad %S %18 %19 = OpLoad %S %18
OpStore %17 %19 OpStore %17 %19
OpReturn OpReturn

View File

@ -1,10 +1,10 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 277 ; Bound: 273
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%71 = OpExtInstImport "GLSL.std.450" %67 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main_count "main_count" %GlobalInvocationID_1 OpEntryPoint GLCompute %main_count "main_count" %GlobalInvocationID_1
OpExecutionMode %main_count LocalSize 128 1 1 OpExecutionMode %main_count LocalSize 128 1 1
@ -165,37 +165,33 @@
%dbg = OpVariable %_ptr_StorageBuffer_Dbg StorageBuffer %dbg = OpVariable %_ptr_StorageBuffer_Dbg StorageBuffer
%void = OpTypeVoid %void = OpTypeVoid
%30 = OpTypeFunction %void %30 = OpTypeFunction %void
%int_0 = OpConstant %int 0 %34 = OpTypeFunction %v3float %v3float
%v4float = OpTypeVector %float 4
%float_2 = OpConstant %float 2
%37 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%38 = OpTypeFunction %v3float %v3float
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%56 = OpConstantNull %v3float %52 = OpConstantNull %v3float
%uint_5 = OpConstant %uint 5 %uint_5 = OpConstant %uint 5
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%81 = OpConstantNull %float %77 = OpConstantNull %float
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%118 = OpTypeFunction %uint %uint %v3float %114 = OpTypeFunction %uint %uint %v3float
%_ptr_Function_v3uint = OpTypePointer Function %v3uint %_ptr_Function_v3uint = OpTypePointer Function %v3uint
%126 = OpConstantNull %v3uint %122 = OpConstantNull %v3uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%139 = OpTypeFunction %v3uint %uint %uint %135 = OpTypeFunction %v3uint %uint %uint
%147 = OpConstantNull %uint %143 = OpConstantNull %uint
%160 = OpTypeFunction %v3float %uint %156 = OpTypeFunction %v3float %uint
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%188 = OpConstantNull %int
%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%207 = OpConstantNull %int %204 = OpTypeFunction %void %v3uint
%208 = OpTypeFunction %void %v3uint
%bool = OpTypeBool %bool = OpTypeBool
%float_3 = OpConstant %float 3 %float_3 = OpConstant %float 3
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
@ -203,255 +199,255 @@
%33 = OpLabel %33 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%toVoxelPos = OpFunction %v3float None %38 %toVoxelPos = OpFunction %v3float None %34
%position = OpFunctionParameter %v3float %position = OpFunctionParameter %v3float
%41 = OpLabel %37 = OpLabel
%bbMin = OpVariable %_ptr_Function_v3float Function %56 %bbMin = OpVariable %_ptr_Function_v3float Function %52
%bbMax = OpVariable %_ptr_Function_v3float Function %56 %bbMax = OpVariable %_ptr_Function_v3float Function %52
%bbSize = OpVariable %_ptr_Function_v3float Function %56 %bbSize = OpVariable %_ptr_Function_v3float Function %52
%cubeSize = OpVariable %_ptr_Function_float Function %81 %cubeSize = OpVariable %_ptr_Function_float Function %77
%gridSize = OpVariable %_ptr_Function_float Function %81 %gridSize = OpVariable %_ptr_Function_float Function %77
%gx = OpVariable %_ptr_Function_float Function %81 %gx = OpVariable %_ptr_Function_float Function %77
%gy = OpVariable %_ptr_Function_float Function %81 %gy = OpVariable %_ptr_Function_float Function %77
%gz = OpVariable %_ptr_Function_float Function %81 %gz = OpVariable %_ptr_Function_float Function %77
%45 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_0 %41 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_0
%46 = OpLoad %float %45 %42 = OpLoad %float %41
%48 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_1 %44 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_1
%49 = OpLoad %float %48 %45 = OpLoad %float %44
%51 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_2 %47 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_2
%52 = OpLoad %float %51 %48 = OpLoad %float %47
%53 = OpCompositeConstruct %v3float %46 %49 %52 %49 = OpCompositeConstruct %v3float %42 %45 %48
OpStore %bbMin %53 OpStore %bbMin %49
%58 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_5 %uint_0 %54 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_5 %uint_0
%55 = OpLoad %float %54
%56 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_5 %uint_1
%57 = OpLoad %float %56
%58 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_5 %uint_2
%59 = OpLoad %float %58 %59 = OpLoad %float %58
%60 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_5 %uint_1 %60 = OpCompositeConstruct %v3float %55 %57 %59
%61 = OpLoad %float %60 OpStore %bbMax %60
%62 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_5 %uint_2 %62 = OpLoad %v3float %bbMin
%63 = OpLoad %float %62 %63 = OpLoad %v3float %bbMin
%64 = OpCompositeConstruct %v3float %59 %61 %63 %64 = OpFSub %v3float %62 %63
OpStore %bbMax %64 OpStore %bbSize %64
%66 = OpLoad %v3float %bbMin %70 = OpAccessChain %_ptr_Function_float %bbMax %uint_0
%67 = OpLoad %v3float %bbMin %71 = OpLoad %float %70
%68 = OpFSub %v3float %66 %67 %72 = OpAccessChain %_ptr_Function_float %bbMax %uint_1
OpStore %bbSize %68 %73 = OpLoad %float %72
%74 = OpAccessChain %_ptr_Function_float %bbMax %uint_0 %68 = OpExtInst %float %67 NMax %71 %73
%74 = OpAccessChain %_ptr_Function_float %bbSize %uint_2
%75 = OpLoad %float %74 %75 = OpLoad %float %74
%76 = OpAccessChain %_ptr_Function_float %bbMax %uint_1 %66 = OpExtInst %float %67 NMax %68 %75
%77 = OpLoad %float %76 OpStore %cubeSize %66
%72 = OpExtInst %float %71 NMax %75 %77 %80 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%78 = OpAccessChain %_ptr_Function_float %bbSize %uint_2 %81 = OpLoad %uint %80
%79 = OpLoad %float %78 %78 = OpConvertUToF %float %81
%70 = OpExtInst %float %71 NMax %72 %79 OpStore %gridSize %78
OpStore %cubeSize %70 %83 = OpLoad %float %cubeSize
%84 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %84 = OpCompositeExtract %float %position 0
%85 = OpLoad %uint %84 %85 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_0
%82 = OpConvertUToF %float %85 %86 = OpLoad %float %85
OpStore %gridSize %82 %87 = OpFSub %float %84 %86
%87 = OpLoad %float %cubeSize %88 = OpFMul %float %83 %87
%88 = OpCompositeExtract %float %position 0 %89 = OpLoad %float %cubeSize
%89 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_0 %90 = OpFDiv %float %88 %89
%90 = OpLoad %float %89 OpStore %gx %90
%91 = OpFSub %float %88 %90 %92 = OpLoad %float %gx
%92 = OpFMul %float %87 %91 %93 = OpCompositeExtract %float %position 1
%93 = OpLoad %float %cubeSize %94 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_1
%94 = OpFDiv %float %92 %93 %95 = OpLoad %float %94
OpStore %gx %94 %96 = OpFSub %float %93 %95
%96 = OpLoad %float %gx %97 = OpFMul %float %92 %96
%97 = OpCompositeExtract %float %position 1 %98 = OpLoad %float %gridSize
%98 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_1 %99 = OpFDiv %float %97 %98
%99 = OpLoad %float %98 OpStore %gy %99
%100 = OpFSub %float %97 %99 %101 = OpLoad %float %gridSize
%101 = OpFMul %float %96 %100 %102 = OpCompositeExtract %float %position 2
%102 = OpLoad %float %gridSize %103 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_2
%103 = OpFDiv %float %101 %102 %104 = OpLoad %float %103
OpStore %gy %103 %105 = OpFSub %float %102 %104
%105 = OpLoad %float %gridSize %106 = OpFMul %float %101 %105
%106 = OpCompositeExtract %float %position 2 %107 = OpLoad %float %gridSize
%107 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_4 %uint_2 %108 = OpFDiv %float %106 %107
%108 = OpLoad %float %107 OpStore %gz %108
%109 = OpFSub %float %106 %108 %110 = OpLoad %float %gz
%110 = OpFMul %float %105 %109 %111 = OpLoad %float %gz
%111 = OpLoad %float %gridSize %112 = OpLoad %float %gz
%112 = OpFDiv %float %110 %111 %113 = OpCompositeConstruct %v3float %110 %111 %112
OpStore %gz %112 OpReturnValue %113
%114 = OpLoad %float %gz
%115 = OpLoad %float %gz
%116 = OpLoad %float %gz
%117 = OpCompositeConstruct %v3float %114 %115 %116
OpReturnValue %117
OpFunctionEnd OpFunctionEnd
%toIndex1D = OpFunction %uint None %118 %toIndex1D = OpFunction %uint None %114
%gridSize_0 = OpFunctionParameter %uint %gridSize_0 = OpFunctionParameter %uint
%voxelPos = OpFunctionParameter %v3float %voxelPos = OpFunctionParameter %v3float
%122 = OpLabel %118 = OpLabel
%icoord = OpVariable %_ptr_Function_v3uint Function %126 %icoord = OpVariable %_ptr_Function_v3uint Function %122
%123 = OpConvertFToU %v3uint %voxelPos %119 = OpConvertFToU %v3uint %voxelPos
OpStore %icoord %123 OpStore %icoord %119
%128 = OpAccessChain %_ptr_Function_uint %icoord %uint_0 %124 = OpAccessChain %_ptr_Function_uint %icoord %uint_0
%129 = OpLoad %uint %128 %125 = OpLoad %uint %124
%130 = OpAccessChain %_ptr_Function_uint %icoord %uint_1 %126 = OpAccessChain %_ptr_Function_uint %icoord %uint_1
%131 = OpLoad %uint %130 %127 = OpLoad %uint %126
%132 = OpIMul %uint %gridSize_0 %131 %128 = OpIMul %uint %gridSize_0 %127
%133 = OpIAdd %uint %129 %132 %129 = OpIAdd %uint %125 %128
%134 = OpIMul %uint %gridSize_0 %gridSize_0 %130 = OpIMul %uint %gridSize_0 %gridSize_0
%135 = OpAccessChain %_ptr_Function_uint %icoord %uint_2 %131 = OpAccessChain %_ptr_Function_uint %icoord %uint_2
%136 = OpLoad %uint %135 %132 = OpLoad %uint %131
%137 = OpIMul %uint %134 %136 %133 = OpIMul %uint %130 %132
%138 = OpIAdd %uint %133 %137 %134 = OpIAdd %uint %129 %133
OpReturnValue %138 OpReturnValue %134
OpFunctionEnd OpFunctionEnd
%toIndex4D = OpFunction %v3uint None %139 %toIndex4D = OpFunction %v3uint None %135
%gridSize_1 = OpFunctionParameter %uint %gridSize_1 = OpFunctionParameter %uint
%index = OpFunctionParameter %uint %index = OpFunctionParameter %uint
%143 = OpLabel %139 = OpLabel
%z = OpVariable %_ptr_Function_uint Function %147 %z = OpVariable %_ptr_Function_uint Function %143
%y = OpVariable %_ptr_Function_uint Function %147 %y = OpVariable %_ptr_Function_uint Function %143
%x = OpVariable %_ptr_Function_uint Function %147 %x = OpVariable %_ptr_Function_uint Function %143
%144 = OpIMul %uint %index %index %140 = OpIMul %uint %index %index
%145 = OpUDiv %uint %gridSize_1 %144 %141 = OpUDiv %uint %gridSize_1 %140
OpStore %z %145 OpStore %z %141
%148 = OpIMul %uint %gridSize_1 %gridSize_1 %144 = OpIMul %uint %gridSize_1 %gridSize_1
%149 = OpLoad %uint %z %145 = OpLoad %uint %z
%150 = OpIMul %uint %148 %149 %146 = OpIMul %uint %144 %145
%151 = OpISub %uint %gridSize_1 %150 %147 = OpISub %uint %gridSize_1 %146
%152 = OpUDiv %uint %151 %gridSize_1 %148 = OpUDiv %uint %147 %gridSize_1
OpStore %y %152 OpStore %y %148
%154 = OpUMod %uint %index %gridSize_1 %150 = OpUMod %uint %index %gridSize_1
OpStore %x %154 OpStore %x %150
%156 = OpLoad %uint %z %152 = OpLoad %uint %z
%157 = OpLoad %uint %y %153 = OpLoad %uint %y
%158 = OpLoad %uint %y %154 = OpLoad %uint %y
%159 = OpCompositeConstruct %v3uint %156 %157 %158 %155 = OpCompositeConstruct %v3uint %152 %153 %154
OpReturnValue %159 OpReturnValue %155
OpFunctionEnd OpFunctionEnd
%loadPosition = OpFunction %v3float None %160 %loadPosition = OpFunction %v3float None %156
%vertexIndex = OpFunctionParameter %uint %vertexIndex = OpFunctionParameter %uint
%163 = OpLabel %159 = OpLabel
%position_0 = OpVariable %_ptr_Function_v3float Function %56 %position_0 = OpVariable %_ptr_Function_v3float Function %52
%165 = OpIMul %uint %uint_3 %vertexIndex %161 = OpIMul %uint %uint_3 %vertexIndex
%166 = OpIAdd %uint %165 %uint_0 %162 = OpIAdd %uint %161 %143
%168 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %166 %164 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %162
%165 = OpLoad %float %164
%166 = OpIMul %uint %uint_3 %vertexIndex
%167 = OpIAdd %uint %166 %uint_1
%168 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %167
%169 = OpLoad %float %168 %169 = OpLoad %float %168
%170 = OpIMul %uint %uint_3 %vertexIndex %170 = OpIMul %uint %uint_3 %vertexIndex
%171 = OpIAdd %uint %170 %uint_1 %171 = OpIAdd %uint %170 %uint_2
%172 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %171 %172 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %171
%173 = OpLoad %float %172 %173 = OpLoad %float %172
%174 = OpIMul %uint %uint_3 %vertexIndex %174 = OpCompositeConstruct %v3float %165 %169 %173
%175 = OpIAdd %uint %174 %uint_2 OpStore %position_0 %174
%176 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %175 %176 = OpLoad %v3float %position_0
%177 = OpLoad %float %176 OpReturnValue %176
%178 = OpCompositeConstruct %v3float %169 %173 %177
OpStore %position_0 %178
%180 = OpLoad %v3float %position_0
OpReturnValue %180
OpFunctionEnd OpFunctionEnd
%doIgnore = OpFunction %void None %30 %doIgnore = OpFunction %void None %30
%182 = OpLabel %178 = OpLabel
%g43 = OpVariable %_ptr_Function_uint Function %147 %g43 = OpVariable %_ptr_Function_uint Function %143
%kj6 = OpVariable %_ptr_Function_uint Function %147 %kj6 = OpVariable %_ptr_Function_uint Function %143
%b53 = OpVariable %_ptr_Function_uint Function %147 %b53 = OpVariable %_ptr_Function_uint Function %143
%rwg = OpVariable %_ptr_Function_uint Function %147 %rwg = OpVariable %_ptr_Function_uint Function %143
%rb5 = OpVariable %_ptr_Function_float Function %81 %rb5 = OpVariable %_ptr_Function_float Function %77
%g55 = OpVariable %_ptr_Function_int Function %207 %g55 = OpVariable %_ptr_Function_int Function %188
%183 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %179 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%180 = OpLoad %uint %179
OpStore %g43 %180
%183 = OpAccessChain %_ptr_StorageBuffer_uint %dbg %uint_5
%184 = OpLoad %uint %183 %184 = OpLoad %uint %183
OpStore %g43 %184 OpStore %kj6 %184
%187 = OpAccessChain %_ptr_StorageBuffer_uint %dbg %uint_5 %190 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %188
%188 = OpLoad %uint %187 %186 = OpAtomicLoad %uint %190 %uint_1 %uint_0
OpStore %kj6 %188 OpStore %b53 %186
%193 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %int_0 %192 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %188
%190 = OpAtomicLoad %uint %193 %uint_1 %uint_0 %193 = OpLoad %uint %192
OpStore %b53 %190 OpStore %rwg %193
%195 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %int_0 %195 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %188
%196 = OpLoad %uint %195 %196 = OpLoad %float %195
OpStore %rwg %196 OpStore %rb5 %196
%198 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %int_0 %201 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %188
%199 = OpLoad %float %198 %198 = OpAtomicLoad %int %201 %uint_1 %uint_0
OpStore %rb5 %199 OpStore %g55 %198
%204 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %int_0
%201 = OpAtomicLoad %int %204 %uint_1 %uint_0
OpStore %g55 %201
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_count_inner = OpFunction %void None %208 %main_count_inner = OpFunction %void None %204
%GlobalInvocationID = OpFunctionParameter %v3uint %GlobalInvocationID = OpFunctionParameter %v3uint
%211 = OpLabel %207 = OpLabel
%triangleIndex = OpVariable %_ptr_Function_uint Function %147 %triangleIndex = OpVariable %_ptr_Function_uint Function %143
%i0 = OpVariable %_ptr_Function_uint Function %147 %i0 = OpVariable %_ptr_Function_uint Function %143
%i1 = OpVariable %_ptr_Function_uint Function %147 %i1 = OpVariable %_ptr_Function_uint Function %143
%i2 = OpVariable %_ptr_Function_uint Function %147 %i2 = OpVariable %_ptr_Function_uint Function %143
%p0 = OpVariable %_ptr_Function_v3float Function %56 %p0 = OpVariable %_ptr_Function_v3float Function %52
%p1 = OpVariable %_ptr_Function_v3float Function %56 %p1 = OpVariable %_ptr_Function_v3float Function %52
%p2 = OpVariable %_ptr_Function_v3float Function %56 %p2 = OpVariable %_ptr_Function_v3float Function %52
%256 = OpVariable %_ptr_Function_v3float Function %56 %252 = OpVariable %_ptr_Function_v3float Function %52
%center = OpVariable %_ptr_Function_v3float Function %56 %center = OpVariable %_ptr_Function_v3float Function %52
%voxelPos_0 = OpVariable %_ptr_Function_v3float Function %56 %voxelPos_0 = OpVariable %_ptr_Function_v3float Function %52
%lIndex = OpVariable %_ptr_Function_uint Function %147 %lIndex = OpVariable %_ptr_Function_uint Function %143
%triangleOffset = OpVariable %_ptr_Function_int Function %207 %triangleOffset = OpVariable %_ptr_Function_int Function %188
%212 = OpCompositeExtract %uint %GlobalInvocationID 0 %208 = OpCompositeExtract %uint %GlobalInvocationID 0
OpStore %triangleIndex %212 OpStore %triangleIndex %208
%214 = OpLoad %uint %triangleIndex %210 = OpLoad %uint %triangleIndex
%215 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %211 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%216 = OpLoad %uint %215 %212 = OpLoad %uint %211
%217 = OpUGreaterThanEqual %bool %214 %216 %213 = OpUGreaterThanEqual %bool %210 %212
OpSelectionMerge %219 None OpSelectionMerge %215 None
OpBranchConditional %217 %220 %219 OpBranchConditional %213 %216 %215
%220 = OpLabel %216 = OpLabel
OpReturn OpReturn
%219 = OpLabel %215 = OpLabel
%221 = OpFunctionCall %void %doIgnore %217 = OpFunctionCall %void %doIgnore
%222 = OpLoad %uint %triangleIndex %218 = OpLoad %uint %triangleIndex
%223 = OpIMul %uint %uint_3 %222 %219 = OpIMul %uint %uint_3 %218
%224 = OpIAdd %uint %223 %uint_0 %220 = OpIAdd %uint %219 %143
%225 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %224 %221 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %220
%226 = OpLoad %uint %225 %222 = OpLoad %uint %221
OpStore %i0 %226 OpStore %i0 %222
%228 = OpLoad %uint %i0 %224 = OpLoad %uint %i0
%229 = OpIMul %uint %uint_3 %228 %225 = OpIMul %uint %uint_3 %224
%230 = OpIAdd %uint %229 %uint_1 %226 = OpIAdd %uint %225 %uint_1
%231 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %230 %227 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %226
%232 = OpLoad %uint %231 %228 = OpLoad %uint %227
OpStore %i1 %232 OpStore %i1 %228
%234 = OpLoad %uint %i0 %230 = OpLoad %uint %i0
%235 = OpIMul %uint %uint_3 %234 %231 = OpIMul %uint %uint_3 %230
%236 = OpIAdd %uint %235 %uint_2 %232 = OpIAdd %uint %231 %uint_2
%237 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %236 %233 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %232
%238 = OpLoad %uint %237 %234 = OpLoad %uint %233
OpStore %i2 %238 OpStore %i2 %234
%241 = OpLoad %uint %i0 %237 = OpLoad %uint %i0
%240 = OpFunctionCall %v3float %loadPosition %241 %236 = OpFunctionCall %v3float %loadPosition %237
OpStore %p0 %240 OpStore %p0 %236
%244 = OpLoad %uint %i0 %240 = OpLoad %uint %i0
%243 = OpFunctionCall %v3float %loadPosition %244 %239 = OpFunctionCall %v3float %loadPosition %240
OpStore %p1 %243 OpStore %p1 %239
%247 = OpLoad %uint %i2 %243 = OpLoad %uint %i2
%246 = OpFunctionCall %v3float %loadPosition %247 %242 = OpFunctionCall %v3float %loadPosition %243
OpStore %p2 %246 OpStore %p2 %242
%249 = OpLoad %v3float %p0 %245 = OpLoad %v3float %p0
%250 = OpLoad %v3float %p2 %246 = OpLoad %v3float %p2
%251 = OpFAdd %v3float %249 %250 %247 = OpFAdd %v3float %245 %246
%252 = OpLoad %v3float %p1 %248 = OpLoad %v3float %p1
%253 = OpFAdd %v3float %251 %252 %249 = OpFAdd %v3float %247 %248
%257 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3 %253 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3
%255 = OpFDiv %v3float %253 %257 %251 = OpFDiv %v3float %249 %253
OpStore %center %255 OpStore %center %251
%260 = OpLoad %v3float %p1 %256 = OpLoad %v3float %p1
%259 = OpFunctionCall %v3float %toVoxelPos %260 %255 = OpFunctionCall %v3float %toVoxelPos %256
OpStore %voxelPos_0 %259 OpStore %voxelPos_0 %255
%263 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %259 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%264 = OpLoad %uint %263 %260 = OpLoad %uint %259
%265 = OpLoad %v3float %p0 %261 = OpLoad %v3float %p0
%262 = OpFunctionCall %uint %toIndex1D %264 %265 %258 = OpFunctionCall %uint %toIndex1D %260 %261
OpStore %lIndex %262 OpStore %lIndex %258
%269 = OpLoad %uint %i1 %265 = OpLoad %uint %i1
%270 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %269 %266 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %265
%267 = OpAtomicIAdd %int %270 %uint_1 %uint_0 %int_1 %263 = OpAtomicIAdd %int %266 %uint_1 %uint_0 %int_1
OpStore %triangleOffset %267 OpStore %triangleOffset %263
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_count = OpFunction %void None %30 %main_count = OpFunction %void None %30
%274 = OpLabel %270 = OpLabel
%276 = OpLoad %v3uint %GlobalInvocationID_1 %272 = OpLoad %v3uint %GlobalInvocationID_1
%275 = OpFunctionCall %void %main_count_inner %276 %271 = OpFunctionCall %void %main_count_inner %272
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -13,7 +13,7 @@ bug/dawn/947.wgsl:55:33 note: reading from user-defined input 'texcoord' may res
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 140 ; Bound: 139
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%118 = OpExtInstImport "GLSL.std.450" %118 = OpExtInstImport "GLSL.std.450"
@ -128,9 +128,8 @@ bug/dawn/947.wgsl:55:33 note: reading from user-defined input 'texcoord' may res
%void = OpTypeVoid %void = OpTypeVoid
%103 = OpTypeFunction %void %103 = OpTypeFunction %void
%113 = OpTypeFunction %v4float %v2float %113 = OpTypeFunction %v4float %v2float
%119 = OpConstantComposite %v2float %float_0 %float_0
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%132 = OpTypeSampledImage %27 %131 = OpTypeSampledImage %27
%vs_main_inner = OpFunction %VertexOutputs None %28 %vs_main_inner = OpFunction %VertexOutputs None %28
%VertexIndex = OpFunctionParameter %uint %VertexIndex = OpFunctionParameter %uint
%32 = OpLabel %32 = OpLabel
@ -145,11 +144,11 @@ bug/dawn/947.wgsl:55:33 note: reading from user-defined input 'texcoord' may res
%59 = OpFSub %v2float %56 %58 %59 = OpFSub %v2float %56 %58
%60 = OpCompositeExtract %float %59 0 %60 = OpCompositeExtract %float %59 0
%61 = OpCompositeExtract %float %59 1 %61 = OpCompositeExtract %float %59 1
%62 = OpCompositeConstruct %v4float %60 %61 %float_0 %float_1 %62 = OpCompositeConstruct %v4float %60 %61 %15 %float_1
OpStore %52 %62 OpStore %52 %62
%65 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_0 %uint_1 %65 = OpAccessChain %_ptr_Uniform_float %uniforms %uint_0 %uint_1
%66 = OpLoad %float %65 %66 = OpLoad %float %65
%67 = OpFOrdLessThan %bool %66 %float_0 %67 = OpFOrdLessThan %bool %66 %15
OpStore %flipY %67 OpStore %flipY %67
%72 = OpLoad %bool %flipY %72 = OpLoad %bool %flipY
OpSelectionMerge %73 None OpSelectionMerge %73 None
@ -206,30 +205,30 @@ bug/dawn/947.wgsl:55:33 note: reading from user-defined input 'texcoord' may res
%116 = OpLabel %116 = OpLabel
%clampedTexcoord = OpVariable %_ptr_Function_v2float Function %8 %clampedTexcoord = OpVariable %_ptr_Function_v2float Function %8
%srcColor = OpVariable %_ptr_Function_v4float Function %12 %srcColor = OpVariable %_ptr_Function_v4float Function %12
%117 = OpExtInst %v2float %118 NClamp %texcoord_0 %119 %58 %117 = OpExtInst %v2float %118 NClamp %texcoord_0 %8 %58
OpStore %clampedTexcoord %117 OpStore %clampedTexcoord %117
%123 = OpLoad %v2float %clampedTexcoord %122 = OpLoad %v2float %clampedTexcoord
%124 = OpFOrdEqual %v2bool %123 %texcoord_0 %123 = OpFOrdEqual %v2bool %122 %texcoord_0
%122 = OpAll %bool %124 %121 = OpAll %bool %123
%121 = OpLogicalNot %bool %122 %120 = OpLogicalNot %bool %121
OpSelectionMerge %126 None OpSelectionMerge %125 None
OpBranchConditional %121 %127 %126 OpBranchConditional %120 %126 %125
%127 = OpLabel
%128 = OpFunctionCall %void %tint_discard_func
OpReturnValue %12
%126 = OpLabel %126 = OpLabel
%130 = OpLoad %24 %mySampler %127 = OpFunctionCall %void %tint_discard_func
%131 = OpLoad %27 %myTexture OpReturnValue %12
%133 = OpSampledImage %132 %131 %130 %125 = OpLabel
%129 = OpImageSampleImplicitLod %v4float %133 %texcoord_0 %129 = OpLoad %24 %mySampler
OpStore %srcColor %129 %130 = OpLoad %27 %myTexture
%135 = OpLoad %v4float %srcColor %132 = OpSampledImage %131 %130 %129
OpReturnValue %135 %128 = OpImageSampleImplicitLod %v4float %132 %texcoord_0
OpStore %srcColor %128
%134 = OpLoad %v4float %srcColor
OpReturnValue %134
OpFunctionEnd OpFunctionEnd
%fs_main = OpFunction %void None %103 %fs_main = OpFunction %void None %103
%137 = OpLabel %136 = OpLabel
%139 = OpLoad %v2float %texcoord_1 %138 = OpLoad %v2float %texcoord_1
%138 = OpFunctionCall %v4float %fs_main_inner %139 %137 = OpFunctionCall %v4float %fs_main_inner %138
OpStore %value %138 OpStore %value %137
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -13,7 +13,7 @@ bug/fxc/gradient_in_varying_loop/1112.wgsl:8:29 note: return value of 'textureSa
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 83 ; Bound: 82
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -55,95 +55,94 @@ bug/fxc/gradient_in_varying_loop/1112.wgsl:8:29 note: return value of 'textureSa
%23 = OpTypeSampledImage %14 %23 = OpTypeSampledImage %14
%v3float = OpTypeVector %float 3 %v3float = OpTypeVector %float 3
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %28 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%31 = OpConstantNull %int
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%bool = OpTypeBool %bool = OpTypeBool
%float_0 = OpConstant %float 0 %45 = OpConstantNull %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%76 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %75 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%void = OpTypeVoid %void = OpTypeVoid
%77 = OpTypeFunction %void %76 = OpTypeFunction %void
%main_inner = OpFunction %v4float None %16 %main_inner = OpFunction %v4float None %16
%vUV = OpFunctionParameter %v2float %vUV = OpFunctionParameter %v2float
%19 = OpLabel %19 = OpLabel
%i = OpVariable %_ptr_Function_int Function %31 %i = OpVariable %_ptr_Function_int Function %28
%21 = OpLoad %11 %Sampler %21 = OpLoad %11 %Sampler
%22 = OpLoad %14 %randomTexture %22 = OpLoad %14 %randomTexture
%24 = OpSampledImage %23 %22 %21 %24 = OpSampledImage %23 %22 %21
%20 = OpImageSampleImplicitLod %v4float %24 %vUV %20 = OpImageSampleImplicitLod %v4float %24 %vUV
%26 = OpVectorShuffle %v3float %20 %20 0 1 2 %26 = OpVectorShuffle %v3float %20 %20 0 1 2
OpStore %i %int_0 OpStore %i %28
OpBranch %32 OpBranch %31
%32 = OpLabel %31 = OpLabel
OpLoopMerge %33 %34 None OpLoopMerge %32 %33 None
OpBranch %35
%35 = OpLabel
%36 = OpLoad %int %i
%38 = OpSLessThan %bool %36 %int_1
OpSelectionMerge %40 None
OpBranchConditional %38 %41 %42
%41 = OpLabel
OpBranch %40
%42 = OpLabel
OpBranch %33
%40 = OpLabel
%43 = OpCompositeExtract %float %26 0
%44 = OpCompositeConstruct %v3float %43 %43 %43
%45 = OpCompositeExtract %float %44 0
%47 = OpFOrdLessThan %bool %45 %float_0
OpSelectionMerge %48 None
OpBranchConditional %47 %48 %49
%49 = OpLabel
%50 = OpCompositeExtract %float %44 1
%51 = OpFOrdLessThan %bool %50 %float_0
OpBranch %48
%48 = OpLabel
%52 = OpPhi %bool %47 %40 %51 %49
OpSelectionMerge %53 None
OpBranchConditional %52 %53 %54
%54 = OpLabel
%55 = OpCompositeExtract %float %44 0
%57 = OpFOrdGreaterThan %bool %55 %float_1
OpBranch %53
%53 = OpLabel
%58 = OpPhi %bool %52 %48 %57 %54
OpSelectionMerge %59 None
OpBranchConditional %58 %59 %60
%60 = OpLabel
%61 = OpCompositeExtract %float %44 1
%62 = OpFOrdGreaterThan %bool %61 %float_1
OpBranch %59
%59 = OpLabel
%63 = OpPhi %bool %58 %53 %62 %60
OpSelectionMerge %64 None
OpBranchConditional %63 %65 %64
%65 = OpLabel
%66 = OpLoad %int %i
%67 = OpIAdd %int %66 %int_1
OpStore %i %67
OpBranch %34
%64 = OpLabel
%69 = OpLoad %11 %Sampler
%70 = OpLoad %14 %depthTexture
%71 = OpSampledImage %23 %70 %69
%72 = OpVectorShuffle %v2float %44 %44 0 1
%68 = OpImageSampleImplicitLod %v4float %71 %72
%73 = OpCompositeExtract %float %68 0
%74 = OpLoad %int %i
%75 = OpIAdd %int %74 %int_1
OpStore %i %75
OpBranch %34 OpBranch %34
%34 = OpLabel %34 = OpLabel
%35 = OpLoad %int %i
%37 = OpSLessThan %bool %35 %int_1
OpSelectionMerge %39 None
OpBranchConditional %37 %40 %41
%40 = OpLabel
OpBranch %39
%41 = OpLabel
OpBranch %32 OpBranch %32
%39 = OpLabel
%42 = OpCompositeExtract %float %26 0
%43 = OpCompositeConstruct %v3float %42 %42 %42
%44 = OpCompositeExtract %float %43 0
%46 = OpFOrdLessThan %bool %44 %45
OpSelectionMerge %47 None
OpBranchConditional %46 %47 %48
%48 = OpLabel
%49 = OpCompositeExtract %float %43 1
%50 = OpFOrdLessThan %bool %49 %45
OpBranch %47
%47 = OpLabel
%51 = OpPhi %bool %46 %39 %50 %48
OpSelectionMerge %52 None
OpBranchConditional %51 %52 %53
%53 = OpLabel
%54 = OpCompositeExtract %float %43 0
%56 = OpFOrdGreaterThan %bool %54 %float_1
OpBranch %52
%52 = OpLabel
%57 = OpPhi %bool %51 %47 %56 %53
OpSelectionMerge %58 None
OpBranchConditional %57 %58 %59
%59 = OpLabel
%60 = OpCompositeExtract %float %43 1
%61 = OpFOrdGreaterThan %bool %60 %float_1
OpBranch %58
%58 = OpLabel
%62 = OpPhi %bool %57 %52 %61 %59
OpSelectionMerge %63 None
OpBranchConditional %62 %64 %63
%64 = OpLabel
%65 = OpLoad %int %i
%66 = OpIAdd %int %65 %int_1
OpStore %i %66
OpBranch %33
%63 = OpLabel
%68 = OpLoad %11 %Sampler
%69 = OpLoad %14 %depthTexture
%70 = OpSampledImage %23 %69 %68
%71 = OpVectorShuffle %v2float %43 %43 0 1
%67 = OpImageSampleImplicitLod %v4float %70 %71
%72 = OpCompositeExtract %float %67 0
%73 = OpLoad %int %i
%74 = OpIAdd %int %73 %int_1
OpStore %i %74
OpBranch %33
%33 = OpLabel %33 = OpLabel
OpReturnValue %76 OpBranch %31
%32 = OpLabel
OpReturnValue %75
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %77 %main = OpFunction %void None %76
%80 = OpLabel %79 = OpLabel
%82 = OpLoad %v2float %vUV_1 %81 = OpLoad %v2float %vUV_1
%81 = OpFunctionCall %v4float %main_inner %82 %80 = OpFunctionCall %v4float %main_inner %81
OpStore %value %81 OpStore %value %80
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -54,7 +54,7 @@
%15 = OpTypeFunction %void %15 = OpTypeFunction %void
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %21 = OpConstantNull %int
%_ptr_StorageBuffer_Particle = OpTypePointer StorageBuffer %Particle %_ptr_StorageBuffer_Particle = OpTypePointer StorageBuffer %Particle
%_ptr_Function_Particle = OpTypePointer Function %Particle %_ptr_Function_Particle = OpTypePointer Function %Particle
%27 = OpConstantNull %Particle %27 = OpConstantNull %Particle
@ -63,7 +63,7 @@
%main = OpFunction %void None %15 %main = OpFunction %void None %15
%18 = OpLabel %18 = OpLabel
%particle = OpVariable %_ptr_Function_Particle Function %27 %particle = OpVariable %_ptr_Function_Particle Function %27
%23 = OpAccessChain %_ptr_StorageBuffer_Particle %particles %uint_0 %int_0 %23 = OpAccessChain %_ptr_StorageBuffer_Particle %particles %uint_0 %21
%24 = OpLoad %Particle %23 %24 = OpLoad %Particle %23
OpStore %particle %24 OpStore %particle %24
%29 = OpAccessChain %_ptr_Uniform_uint %sim %uint_0 %29 = OpAccessChain %_ptr_Uniform_uint %sim %uint_0

View File

@ -33,7 +33,7 @@
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %20 = OpConstantNull %int
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%main = OpFunction %void None %5 %main = OpFunction %void None %5
@ -41,7 +41,7 @@
%m1 = OpVariable %_ptr_Function_mat2v4float Function %14 %m1 = OpVariable %_ptr_Function_mat2v4float Function %14
%17 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %17 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%18 = OpLoad %uint %17 %18 = OpLoad %uint %17
%22 = OpAccessChain %_ptr_Function_float %m1 %18 %int_0 %22 = OpAccessChain %_ptr_Function_float %m1 %18 %20
OpStore %22 %float_1 OpStore %22 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -32,7 +32,7 @@
%void = OpTypeVoid %void = OpTypeVoid
%11 = OpTypeFunction %void %11 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %16 = OpConstantNull %int
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%_ptr_Private_float = OpTypePointer Private %float %_ptr_Private_float = OpTypePointer Private %float
@ -41,7 +41,7 @@
%14 = OpLabel %14 = OpLabel
%19 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %19 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%20 = OpLoad %uint %19 %20 = OpLoad %uint %19
%22 = OpAccessChain %_ptr_Private_float %m1 %int_0 %20 %22 = OpAccessChain %_ptr_Private_float %m1 %16 %20
OpStore %22 %float_1 OpStore %22 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -34,14 +34,14 @@
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %20 = OpConstantNull %int
%_ptr_Private_float = OpTypePointer Private %float %_ptr_Private_float = OpTypePointer Private %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%main = OpFunction %void None %11 %main = OpFunction %void None %11
%14 = OpLabel %14 = OpLabel
%17 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %17 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%18 = OpLoad %uint %17 %18 = OpLoad %uint %17
%22 = OpAccessChain %_ptr_Private_float %m1 %18 %int_0 %22 = OpAccessChain %_ptr_Private_float %m1 %18 %20
OpStore %22 %float_1 OpStore %22 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -32,7 +32,7 @@
%void = OpTypeVoid %void = OpTypeVoid
%11 = OpTypeFunction %void %11 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %16 = OpConstantNull %int
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%_ptr_Private_float = OpTypePointer Private %float %_ptr_Private_float = OpTypePointer Private %float
@ -41,7 +41,7 @@
%14 = OpLabel %14 = OpLabel
%19 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %19 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%20 = OpLoad %uint %19 %20 = OpLoad %uint %19
%22 = OpAccessChain %_ptr_Private_float %m1 %int_0 %20 %22 = OpAccessChain %_ptr_Private_float %m1 %16 %20
OpStore %22 %float_1 OpStore %22 %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 72 ; Bound: 71
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -37,9 +37,8 @@
%v2b = OpVariable %_ptr_Private_v2bool Private %20 %v2b = OpVariable %_ptr_Private_v2bool Private %20
%void = OpTypeVoid %void = OpTypeVoid
%21 = OpTypeFunction %void %21 = OpTypeFunction %void
%int_0 = OpConstant %int 0 %25 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%28 = OpConstantNull %int
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%_ptr_Private_float = OpTypePointer Private %float %_ptr_Private_float = OpTypePointer Private %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
@ -51,66 +50,66 @@
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%foo = OpFunction %void None %21 %foo = OpFunction %void None %21
%24 = OpLabel %24 = OpLabel
%i = OpVariable %_ptr_Function_int Function %28 %i = OpVariable %_ptr_Function_int Function %25
OpStore %i %int_0 OpStore %i %25
OpBranch %29 OpBranch %28
%29 = OpLabel %28 = OpLabel
OpLoopMerge %30 %31 None OpLoopMerge %29 %30 None
OpBranch %32
%32 = OpLabel
%34 = OpLoad %int %i
%36 = OpSLessThan %bool %34 %int_2
%33 = OpLogicalNot %bool %36
OpSelectionMerge %37 None
OpBranchConditional %33 %38 %37
%38 = OpLabel
OpBranch %30
%37 = OpLabel
%39 = OpLoad %int %i
%41 = OpAccessChain %_ptr_Private_float %v2f %39
OpStore %41 %float_1
%43 = OpLoad %int %i
%45 = OpAccessChain %_ptr_Private_int %v3i %43
OpStore %45 %int_1
%47 = OpLoad %int %i
%49 = OpAccessChain %_ptr_Private_uint %v4u %47
OpStore %49 %uint_1
%51 = OpLoad %int %i
%53 = OpAccessChain %_ptr_Private_bool %v2b %51
OpStore %53 %true
OpBranch %31 OpBranch %31
%31 = OpLabel %31 = OpLabel
%55 = OpLoad %int %i %33 = OpLoad %int %i
%56 = OpIAdd %int %55 %int_1 %35 = OpSLessThan %bool %33 %int_2
OpStore %i %56 %32 = OpLogicalNot %bool %35
OpSelectionMerge %36 None
OpBranchConditional %32 %37 %36
%37 = OpLabel
OpBranch %29 OpBranch %29
%36 = OpLabel
%38 = OpLoad %int %i
%40 = OpAccessChain %_ptr_Private_float %v2f %38
OpStore %40 %float_1
%42 = OpLoad %int %i
%44 = OpAccessChain %_ptr_Private_int %v3i %42
OpStore %44 %int_1
%46 = OpLoad %int %i
%48 = OpAccessChain %_ptr_Private_uint %v4u %46
OpStore %48 %uint_1
%50 = OpLoad %int %i
%52 = OpAccessChain %_ptr_Private_bool %v2b %50
OpStore %52 %true
OpBranch %30
%30 = OpLabel %30 = OpLabel
%54 = OpLoad %int %i
%55 = OpIAdd %int %54 %int_1
OpStore %i %55
OpBranch %28
%29 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %21 %main = OpFunction %void None %21
%58 = OpLabel %57 = OpLabel
%i_0 = OpVariable %_ptr_Function_int Function %28 %i_0 = OpVariable %_ptr_Function_int Function %25
OpStore %i_0 %int_0 OpStore %i_0 %25
OpBranch %60 OpBranch %59
%60 = OpLabel %59 = OpLabel
OpLoopMerge %61 %62 None OpLoopMerge %60 %61 None
OpBranch %63
%63 = OpLabel
%65 = OpLoad %int %i_0
%66 = OpSLessThan %bool %65 %int_2
%64 = OpLogicalNot %bool %66
OpSelectionMerge %67 None
OpBranchConditional %64 %68 %67
%68 = OpLabel
OpBranch %61
%67 = OpLabel
%69 = OpFunctionCall %void %foo
OpBranch %62 OpBranch %62
%62 = OpLabel %62 = OpLabel
%70 = OpLoad %int %i_0 %64 = OpLoad %int %i_0
%71 = OpIAdd %int %70 %int_1 %65 = OpSLessThan %bool %64 %int_2
OpStore %i_0 %71 %63 = OpLogicalNot %bool %65
OpSelectionMerge %66 None
OpBranchConditional %63 %67 %66
%67 = OpLabel
OpBranch %60 OpBranch %60
%66 = OpLabel
%68 = OpFunctionCall %void %foo
OpBranch %61
%61 = OpLabel %61 = OpLabel
%69 = OpLoad %int %i_0
%70 = OpIAdd %int %69 %int_1
OpStore %i_0 %70
OpBranch %59
%60 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 61 ; Bound: 60
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -37,9 +37,8 @@
%v2b = OpVariable %_ptr_Private_v2bool Private %20 %v2b = OpVariable %_ptr_Private_v2bool Private %20
%void = OpTypeVoid %void = OpTypeVoid
%21 = OpTypeFunction %void %21 = OpTypeFunction %void
%int_0 = OpConstant %int 0 %25 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%28 = OpConstantNull %int
%_ptr_Private_float = OpTypePointer Private %float %_ptr_Private_float = OpTypePointer Private %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%_ptr_Private_int = OpTypePointer Private %int %_ptr_Private_int = OpTypePointer Private %int
@ -51,46 +50,46 @@
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%foo = OpFunction %void None %21 %foo = OpFunction %void None %21
%24 = OpLabel %24 = OpLabel
%i = OpVariable %_ptr_Function_int Function %28 %i = OpVariable %_ptr_Function_int Function %25
OpStore %i %int_0 OpStore %i %25
%29 = OpLoad %int %i %28 = OpLoad %int %i
%31 = OpAccessChain %_ptr_Private_float %v2f %29 %30 = OpAccessChain %_ptr_Private_float %v2f %28
OpStore %31 %float_1 OpStore %30 %float_1
%33 = OpLoad %int %i %32 = OpLoad %int %i
%35 = OpAccessChain %_ptr_Private_int %v3i %33 %34 = OpAccessChain %_ptr_Private_int %v3i %32
OpStore %35 %int_1 OpStore %34 %int_1
%37 = OpLoad %int %i %36 = OpLoad %int %i
%39 = OpAccessChain %_ptr_Private_uint %v4u %37 %38 = OpAccessChain %_ptr_Private_uint %v4u %36
OpStore %39 %uint_1 OpStore %38 %uint_1
%41 = OpLoad %int %i %40 = OpLoad %int %i
%43 = OpAccessChain %_ptr_Private_bool %v2b %41 %42 = OpAccessChain %_ptr_Private_bool %v2b %40
OpStore %43 %true OpStore %42 %true
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %21 %main = OpFunction %void None %21
%46 = OpLabel %45 = OpLabel
%i_0 = OpVariable %_ptr_Function_int Function %28 %i_0 = OpVariable %_ptr_Function_int Function %25
OpStore %i_0 %int_0 OpStore %i_0 %25
OpBranch %48 OpBranch %47
%48 = OpLabel %47 = OpLabel
OpLoopMerge %49 %50 None OpLoopMerge %48 %49 None
OpBranch %51
%51 = OpLabel
%53 = OpLoad %int %i_0
%55 = OpSLessThan %bool %53 %int_2
%52 = OpLogicalNot %bool %55
OpSelectionMerge %56 None
OpBranchConditional %52 %57 %56
%57 = OpLabel
OpBranch %49
%56 = OpLabel
%58 = OpFunctionCall %void %foo
OpBranch %50 OpBranch %50
%50 = OpLabel %50 = OpLabel
%59 = OpLoad %int %i_0 %52 = OpLoad %int %i_0
%60 = OpIAdd %int %59 %int_1 %54 = OpSLessThan %bool %52 %int_2
OpStore %i_0 %60 %51 = OpLogicalNot %bool %54
OpSelectionMerge %55 None
OpBranchConditional %51 %56 %55
%56 = OpLabel
OpBranch %48 OpBranch %48
%55 = OpLabel
%57 = OpFunctionCall %void %foo
OpBranch %49
%49 = OpLabel %49 = OpLabel
%58 = OpLoad %int %i_0
%59 = OpIAdd %int %58 %int_1
OpStore %i_0 %59
OpBranch %47
%48 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 104 ; Bound: 103
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -63,9 +63,8 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%_ptr_Function_v4bool = OpTypePointer Function %v4bool %_ptr_Function_v4bool = OpTypePointer Function %v4bool
%56 = OpConstantNull %v4bool %56 = OpConstantNull %v4bool
%int_0 = OpConstant %int 0 %57 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%60 = OpConstantNull %int
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
@ -88,63 +87,63 @@
%v2b = OpVariable %_ptr_Function_v2bool Function %48 %v2b = OpVariable %_ptr_Function_v2bool Function %48
%v3b = OpVariable %_ptr_Function_v3bool Function %52 %v3b = OpVariable %_ptr_Function_v3bool Function %52
%v4b = OpVariable %_ptr_Function_v4bool Function %56 %v4b = OpVariable %_ptr_Function_v4bool Function %56
%i = OpVariable %_ptr_Function_int Function %60 %i = OpVariable %_ptr_Function_int Function %57
OpStore %i %int_0 OpStore %i %57
OpBranch %61 OpBranch %60
%61 = OpLabel %60 = OpLabel
OpLoopMerge %62 %63 None OpLoopMerge %61 %62 None
OpBranch %64
%64 = OpLabel
%66 = OpLoad %int %i
%68 = OpSLessThan %bool %66 %int_2
%65 = OpLogicalNot %bool %68
OpSelectionMerge %69 None
OpBranchConditional %65 %70 %69
%70 = OpLabel
OpBranch %62
%69 = OpLabel
%71 = OpLoad %int %i
%73 = OpAccessChain %_ptr_Function_float %v2f %71
OpStore %73 %float_1
%75 = OpLoad %int %i
%76 = OpAccessChain %_ptr_Function_float %v3f %75
OpStore %76 %float_1
%77 = OpLoad %int %i
%78 = OpAccessChain %_ptr_Function_float %v4f %77
OpStore %78 %float_1
%79 = OpLoad %int %i
%80 = OpAccessChain %_ptr_Function_int %v2i %79
OpStore %80 %int_1
%82 = OpLoad %int %i
%83 = OpAccessChain %_ptr_Function_int %v3i %82
OpStore %83 %int_1
%84 = OpLoad %int %i
%85 = OpAccessChain %_ptr_Function_int %v4i %84
OpStore %85 %int_1
%86 = OpLoad %int %i
%88 = OpAccessChain %_ptr_Function_uint %v2u %86
OpStore %88 %uint_1
%90 = OpLoad %int %i
%91 = OpAccessChain %_ptr_Function_uint %v3u %90
OpStore %91 %uint_1
%92 = OpLoad %int %i
%93 = OpAccessChain %_ptr_Function_uint %v4u %92
OpStore %93 %uint_1
%94 = OpLoad %int %i
%96 = OpAccessChain %_ptr_Function_bool %v2b %94
OpStore %96 %true
%98 = OpLoad %int %i
%99 = OpAccessChain %_ptr_Function_bool %v3b %98
OpStore %99 %true
%100 = OpLoad %int %i
%101 = OpAccessChain %_ptr_Function_bool %v4b %100
OpStore %101 %true
OpBranch %63 OpBranch %63
%63 = OpLabel %63 = OpLabel
%102 = OpLoad %int %i %65 = OpLoad %int %i
%103 = OpIAdd %int %102 %int_1 %67 = OpSLessThan %bool %65 %int_2
OpStore %i %103 %64 = OpLogicalNot %bool %67
OpSelectionMerge %68 None
OpBranchConditional %64 %69 %68
%69 = OpLabel
OpBranch %61 OpBranch %61
%68 = OpLabel
%70 = OpLoad %int %i
%72 = OpAccessChain %_ptr_Function_float %v2f %70
OpStore %72 %float_1
%74 = OpLoad %int %i
%75 = OpAccessChain %_ptr_Function_float %v3f %74
OpStore %75 %float_1
%76 = OpLoad %int %i
%77 = OpAccessChain %_ptr_Function_float %v4f %76
OpStore %77 %float_1
%78 = OpLoad %int %i
%79 = OpAccessChain %_ptr_Function_int %v2i %78
OpStore %79 %int_1
%81 = OpLoad %int %i
%82 = OpAccessChain %_ptr_Function_int %v3i %81
OpStore %82 %int_1
%83 = OpLoad %int %i
%84 = OpAccessChain %_ptr_Function_int %v4i %83
OpStore %84 %int_1
%85 = OpLoad %int %i
%87 = OpAccessChain %_ptr_Function_uint %v2u %85
OpStore %87 %uint_1
%89 = OpLoad %int %i
%90 = OpAccessChain %_ptr_Function_uint %v3u %89
OpStore %90 %uint_1
%91 = OpLoad %int %i
%92 = OpAccessChain %_ptr_Function_uint %v4u %91
OpStore %92 %uint_1
%93 = OpLoad %int %i
%95 = OpAccessChain %_ptr_Function_bool %v2b %93
OpStore %95 %true
%97 = OpLoad %int %i
%98 = OpAccessChain %_ptr_Function_bool %v3b %97
OpStore %98 %true
%99 = OpLoad %int %i
%100 = OpAccessChain %_ptr_Function_bool %v4b %99
OpStore %100 %true
OpBranch %62
%62 = OpLabel %62 = OpLabel
%101 = OpLoad %int %i
%102 = OpIAdd %int %101 %int_1
OpStore %i %102
OpBranch %60
%61 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 68 ; Bound: 67
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -35,9 +35,8 @@
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%_ptr_Function_v2bool = OpTypePointer Function %v2bool %_ptr_Function_v2bool = OpTypePointer Function %v2bool
%27 = OpConstantNull %v2bool %27 = OpConstantNull %v2bool
%int_0 = OpConstant %int 0 %29 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%32 = OpConstantNull %int
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
@ -56,51 +55,51 @@
%v4u_2 = OpVariable %_ptr_Function_v4uint Function %21 %v4u_2 = OpVariable %_ptr_Function_v4uint Function %21
%v2b = OpVariable %_ptr_Function_v2bool Function %27 %v2b = OpVariable %_ptr_Function_v2bool Function %27
%v2b_2 = OpVariable %_ptr_Function_v2bool Function %27 %v2b_2 = OpVariable %_ptr_Function_v2bool Function %27
%i = OpVariable %_ptr_Function_int Function %32 %i = OpVariable %_ptr_Function_int Function %29
OpStore %i %int_0 OpStore %i %29
OpBranch %33 OpBranch %32
%33 = OpLabel %32 = OpLabel
OpLoopMerge %34 %35 None OpLoopMerge %33 %34 None
OpBranch %36
%36 = OpLabel
%38 = OpLoad %int %i
%40 = OpSLessThan %bool %38 %int_2
%37 = OpLogicalNot %bool %40
OpSelectionMerge %41 None
OpBranchConditional %37 %42 %41
%42 = OpLabel
OpBranch %34
%41 = OpLabel
%43 = OpLoad %int %i
%45 = OpAccessChain %_ptr_Function_float %v2f %43
OpStore %45 %float_1
%47 = OpLoad %int %i
%48 = OpAccessChain %_ptr_Function_int %v3i %47
OpStore %48 %int_1
%50 = OpLoad %int %i
%52 = OpAccessChain %_ptr_Function_uint %v4u %50
OpStore %52 %uint_1
%54 = OpLoad %int %i
%56 = OpAccessChain %_ptr_Function_bool %v2b %54
OpStore %56 %true
%58 = OpLoad %int %i
%59 = OpAccessChain %_ptr_Function_float %v2f_2 %58
OpStore %59 %float_1
%60 = OpLoad %int %i
%61 = OpAccessChain %_ptr_Function_int %v3i_2 %60
OpStore %61 %int_1
%62 = OpLoad %int %i
%63 = OpAccessChain %_ptr_Function_uint %v4u_2 %62
OpStore %63 %uint_1
%64 = OpLoad %int %i
%65 = OpAccessChain %_ptr_Function_bool %v2b_2 %64
OpStore %65 %true
OpBranch %35 OpBranch %35
%35 = OpLabel %35 = OpLabel
%66 = OpLoad %int %i %37 = OpLoad %int %i
%67 = OpIAdd %int %66 %int_1 %39 = OpSLessThan %bool %37 %int_2
OpStore %i %67 %36 = OpLogicalNot %bool %39
OpSelectionMerge %40 None
OpBranchConditional %36 %41 %40
%41 = OpLabel
OpBranch %33 OpBranch %33
%40 = OpLabel
%42 = OpLoad %int %i
%44 = OpAccessChain %_ptr_Function_float %v2f %42
OpStore %44 %float_1
%46 = OpLoad %int %i
%47 = OpAccessChain %_ptr_Function_int %v3i %46
OpStore %47 %int_1
%49 = OpLoad %int %i
%51 = OpAccessChain %_ptr_Function_uint %v4u %49
OpStore %51 %uint_1
%53 = OpLoad %int %i
%55 = OpAccessChain %_ptr_Function_bool %v2b %53
OpStore %55 %true
%57 = OpLoad %int %i
%58 = OpAccessChain %_ptr_Function_float %v2f_2 %57
OpStore %58 %float_1
%59 = OpLoad %int %i
%60 = OpAccessChain %_ptr_Function_int %v3i_2 %59
OpStore %60 %int_1
%61 = OpLoad %int %i
%62 = OpAccessChain %_ptr_Function_uint %v4u_2 %61
OpStore %62 %uint_1
%63 = OpLoad %int %i
%64 = OpAccessChain %_ptr_Function_bool %v2b_2 %63
OpStore %64 %true
OpBranch %34
%34 = OpLabel %34 = OpLabel
%65 = OpLoad %int %i
%66 = OpIAdd %int %65 %int_1
OpStore %i %66
OpBranch %32
%33 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 105 ; Bound: 104
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -64,9 +64,8 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%_ptr_Function_v4bool = OpTypePointer Function %v4bool %_ptr_Function_v4bool = OpTypePointer Function %v4bool
%56 = OpConstantNull %v4bool %56 = OpConstantNull %v4bool
%int_0 = OpConstant %int 0 %57 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%60 = OpConstantNull %int
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
@ -89,65 +88,65 @@
%v2b = OpVariable %_ptr_Function_v2bool Function %48 %v2b = OpVariable %_ptr_Function_v2bool Function %48
%v3b = OpVariable %_ptr_Function_v3bool Function %52 %v3b = OpVariable %_ptr_Function_v3bool Function %52
%v4b = OpVariable %_ptr_Function_v4bool Function %56 %v4b = OpVariable %_ptr_Function_v4bool Function %56
%i = OpVariable %_ptr_Function_int Function %60 %i = OpVariable %_ptr_Function_int Function %57
%i_0 = OpVariable %_ptr_Function_int Function %60 %i_0 = OpVariable %_ptr_Function_int Function %57
OpStore %i %int_0 OpStore %i %57
OpBranch %61 OpBranch %60
%61 = OpLabel %60 = OpLabel
OpLoopMerge %62 %63 None OpLoopMerge %61 %62 None
OpBranch %64
%64 = OpLabel
%66 = OpLoad %int %i
%68 = OpSLessThan %bool %66 %int_2
%65 = OpLogicalNot %bool %68
OpSelectionMerge %69 None
OpBranchConditional %65 %70 %69
%70 = OpLabel
OpBranch %62
%69 = OpLabel
%71 = OpLoad %int %i
%73 = OpAccessChain %_ptr_Function_float %v2f %71
OpStore %73 %float_1
%75 = OpLoad %int %i
%76 = OpAccessChain %_ptr_Function_int %v2i %75
OpStore %76 %int_1
%78 = OpLoad %int %i
%80 = OpAccessChain %_ptr_Function_uint %v2u %78
OpStore %80 %uint_1
%82 = OpLoad %int %i
%84 = OpAccessChain %_ptr_Function_bool %v2b %82
OpStore %84 %true
OpBranch %63 OpBranch %63
%63 = OpLabel %63 = OpLabel
%86 = OpLoad %int %i %65 = OpLoad %int %i
%87 = OpIAdd %int %86 %int_1 %67 = OpSLessThan %bool %65 %int_2
OpStore %i %87 %64 = OpLogicalNot %bool %67
OpSelectionMerge %68 None
OpBranchConditional %64 %69 %68
%69 = OpLabel
OpBranch %61 OpBranch %61
%68 = OpLabel
%70 = OpLoad %int %i
%72 = OpAccessChain %_ptr_Function_float %v2f %70
OpStore %72 %float_1
%74 = OpLoad %int %i
%75 = OpAccessChain %_ptr_Function_int %v2i %74
OpStore %75 %int_1
%77 = OpLoad %int %i
%79 = OpAccessChain %_ptr_Function_uint %v2u %77
OpStore %79 %uint_1
%81 = OpLoad %int %i
%83 = OpAccessChain %_ptr_Function_bool %v2b %81
OpStore %83 %true
OpBranch %62
%62 = OpLabel %62 = OpLabel
OpStore %i_0 %int_0 %85 = OpLoad %int %i
%89 = OpLoad %int %i_0 %86 = OpIAdd %int %85 %int_1
%90 = OpAccessChain %_ptr_Function_float %v3f %89 OpStore %i %86
OpStore %90 %float_1 OpBranch %60
%91 = OpLoad %int %i_0 %61 = OpLabel
%92 = OpAccessChain %_ptr_Function_float %v4f %91 OpStore %i_0 %57
OpStore %92 %float_1 %88 = OpLoad %int %i_0
%93 = OpLoad %int %i_0 %89 = OpAccessChain %_ptr_Function_float %v3f %88
%94 = OpAccessChain %_ptr_Function_int %v3i %93 OpStore %89 %float_1
OpStore %94 %int_1 %90 = OpLoad %int %i_0
%95 = OpLoad %int %i_0 %91 = OpAccessChain %_ptr_Function_float %v4f %90
%96 = OpAccessChain %_ptr_Function_int %v4i %95 OpStore %91 %float_1
OpStore %96 %int_1 %92 = OpLoad %int %i_0
%97 = OpLoad %int %i_0 %93 = OpAccessChain %_ptr_Function_int %v3i %92
%98 = OpAccessChain %_ptr_Function_uint %v3u %97 OpStore %93 %int_1
OpStore %98 %uint_1 %94 = OpLoad %int %i_0
%99 = OpLoad %int %i_0 %95 = OpAccessChain %_ptr_Function_int %v4i %94
%100 = OpAccessChain %_ptr_Function_uint %v4u %99 OpStore %95 %int_1
OpStore %100 %uint_1 %96 = OpLoad %int %i_0
%101 = OpLoad %int %i_0 %97 = OpAccessChain %_ptr_Function_uint %v3u %96
%102 = OpAccessChain %_ptr_Function_bool %v3b %101 OpStore %97 %uint_1
OpStore %102 %true %98 = OpLoad %int %i_0
%103 = OpLoad %int %i_0 %99 = OpAccessChain %_ptr_Function_uint %v4u %98
%104 = OpAccessChain %_ptr_Function_bool %v4b %103 OpStore %99 %uint_1
OpStore %104 %true %100 = OpLoad %int %i_0
%101 = OpAccessChain %_ptr_Function_bool %v3b %100
OpStore %101 %true
%102 = OpLoad %int %i_0
%103 = OpAccessChain %_ptr_Function_bool %v4b %102
OpStore %103 %true
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 92 ; Bound: 91
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -63,9 +63,8 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%_ptr_Function_v4bool = OpTypePointer Function %v4bool %_ptr_Function_v4bool = OpTypePointer Function %v4bool
%56 = OpConstantNull %v4bool %56 = OpConstantNull %v4bool
%int_0 = OpConstant %int 0 %57 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%60 = OpConstantNull %int
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
@ -87,43 +86,43 @@
%v2b = OpVariable %_ptr_Function_v2bool Function %48 %v2b = OpVariable %_ptr_Function_v2bool Function %48
%v3b = OpVariable %_ptr_Function_v3bool Function %52 %v3b = OpVariable %_ptr_Function_v3bool Function %52
%v4b = OpVariable %_ptr_Function_v4bool Function %56 %v4b = OpVariable %_ptr_Function_v4bool Function %56
%i = OpVariable %_ptr_Function_int Function %60 %i = OpVariable %_ptr_Function_int Function %57
OpStore %i %int_0 OpStore %i %57
%61 = OpLoad %int %i %60 = OpLoad %int %i
%63 = OpAccessChain %_ptr_Function_float %v2f %61 %62 = OpAccessChain %_ptr_Function_float %v2f %60
OpStore %63 %float_1 OpStore %62 %float_1
%65 = OpLoad %int %i %64 = OpLoad %int %i
%66 = OpAccessChain %_ptr_Function_float %v3f %65 %65 = OpAccessChain %_ptr_Function_float %v3f %64
OpStore %66 %float_1 OpStore %65 %float_1
%67 = OpLoad %int %i %66 = OpLoad %int %i
%68 = OpAccessChain %_ptr_Function_float %v4f %67 %67 = OpAccessChain %_ptr_Function_float %v4f %66
OpStore %68 %float_1 OpStore %67 %float_1
%69 = OpLoad %int %i %68 = OpLoad %int %i
%70 = OpAccessChain %_ptr_Function_int %v2i %69 %69 = OpAccessChain %_ptr_Function_int %v2i %68
OpStore %70 %int_1 OpStore %69 %int_1
%72 = OpLoad %int %i %71 = OpLoad %int %i
%73 = OpAccessChain %_ptr_Function_int %v3i %72 %72 = OpAccessChain %_ptr_Function_int %v3i %71
OpStore %73 %int_1 OpStore %72 %int_1
%74 = OpLoad %int %i %73 = OpLoad %int %i
%75 = OpAccessChain %_ptr_Function_int %v4i %74 %74 = OpAccessChain %_ptr_Function_int %v4i %73
OpStore %75 %int_1 OpStore %74 %int_1
%76 = OpLoad %int %i %75 = OpLoad %int %i
%78 = OpAccessChain %_ptr_Function_uint %v2u %76 %77 = OpAccessChain %_ptr_Function_uint %v2u %75
OpStore %78 %uint_1 OpStore %77 %uint_1
%80 = OpLoad %int %i %79 = OpLoad %int %i
%81 = OpAccessChain %_ptr_Function_uint %v3u %80 %80 = OpAccessChain %_ptr_Function_uint %v3u %79
OpStore %81 %uint_1 OpStore %80 %uint_1
%82 = OpLoad %int %i %81 = OpLoad %int %i
%83 = OpAccessChain %_ptr_Function_uint %v4u %82 %82 = OpAccessChain %_ptr_Function_uint %v4u %81
OpStore %83 %uint_1 OpStore %82 %uint_1
%84 = OpLoad %int %i %83 = OpLoad %int %i
%86 = OpAccessChain %_ptr_Function_bool %v2b %84 %85 = OpAccessChain %_ptr_Function_bool %v2b %83
OpStore %86 %true OpStore %85 %true
%88 = OpLoad %int %i %87 = OpLoad %int %i
%89 = OpAccessChain %_ptr_Function_bool %v3b %88 %88 = OpAccessChain %_ptr_Function_bool %v3b %87
OpStore %89 %true OpStore %88 %true
%90 = OpLoad %int %i %89 = OpLoad %int %i
%91 = OpAccessChain %_ptr_Function_bool %v4b %90 %90 = OpAccessChain %_ptr_Function_bool %v4b %89
OpStore %91 %true OpStore %90 %true
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 107 ; Bound: 108
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -112,7 +112,7 @@
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%uint_0 = OpConstant %uint 0 %41 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
@ -125,17 +125,18 @@
%82 = OpTypeFunction %FragmentOutput %FragmentInput %82 = OpTypeFunction %FragmentOutput %FragmentInput
%_ptr_Function_FragmentOutput = OpTypePointer Function %FragmentOutput %_ptr_Function_FragmentOutput = OpTypePointer Function %FragmentOutput
%89 = OpConstantNull %FragmentOutput %89 = OpConstantNull %FragmentOutput
%uint_0 = OpConstant %uint 0
%float_0 = OpConstant %float 0 %float_0 = OpConstant %float 0
%92 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1 %93 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
%void = OpTypeVoid %void = OpTypeVoid
%95 = OpTypeFunction %void %96 = OpTypeFunction %void
%getColor = OpFunction %v4float None %30 %getColor = OpFunction %v4float None %30
%fragment = OpFunctionParameter %FragmentInput %fragment = OpFunctionParameter %FragmentInput
%34 = OpLabel %34 = OpLabel
%color = OpVariable %_ptr_Function_v4float Function %13 %color = OpVariable %_ptr_Function_v4float Function %13
%39 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %39 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3
%40 = OpLoad %uint %39 %40 = OpLoad %uint %39
%42 = OpIEqual %bool %40 %uint_0 %42 = OpIEqual %bool %40 %41
OpSelectionMerge %44 None OpSelectionMerge %44 None
OpBranchConditional %42 %45 %46 OpBranchConditional %42 %45 %46
%45 = OpLabel %45 = OpLabel
@ -193,21 +194,21 @@
%fragment_0 = OpFunctionParameter %FragmentInput %fragment_0 = OpFunctionParameter %FragmentInput
%86 = OpLabel %86 = OpLabel
%output = OpVariable %_ptr_Function_FragmentOutput Function %89 %output = OpVariable %_ptr_Function_FragmentOutput Function %89
%90 = OpAccessChain %_ptr_Function_v4float %output %uint_0 %91 = OpAccessChain %_ptr_Function_v4float %output %uint_0
OpStore %90 %92 OpStore %91 %93
%94 = OpLoad %FragmentOutput %output %95 = OpLoad %FragmentOutput %output
OpReturnValue %94 OpReturnValue %95
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %95 %main = OpFunction %void None %96
%98 = OpLabel %99 = OpLabel
%100 = OpLoad %v4float %position_1 %101 = OpLoad %v4float %position_1
%101 = OpLoad %v4float %view_position_1 %102 = OpLoad %v4float %view_position_1
%102 = OpLoad %v4float %normal_1 %103 = OpLoad %v4float %normal_1
%103 = OpLoad %v2float %uv_1 %104 = OpLoad %v2float %uv_1
%104 = OpLoad %v4float %color_1 %105 = OpLoad %v4float %color_1
%105 = OpCompositeConstruct %FragmentInput %100 %101 %102 %103 %104 %106 = OpCompositeConstruct %FragmentInput %101 %102 %103 %104 %105
%99 = OpFunctionCall %FragmentOutput %main_inner %105 %100 = OpFunctionCall %FragmentOutput %main_inner %106
%106 = OpCompositeExtract %v4float %99 0 %107 = OpCompositeExtract %v4float %100 0
OpStore %color_2 %106 OpStore %color_2 %107
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -11,7 +11,7 @@
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%bool = OpTypeBool %bool = OpTypeBool
%false = OpConstantFalse %bool %10 = OpConstantNull %bool
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%main = OpFunction %void None %1 %main = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
@ -21,7 +21,7 @@
OpBranch %8 OpBranch %8
%8 = OpLabel %8 = OpLabel
OpSelectionMerge %11 None OpSelectionMerge %11 None
OpBranchConditional %false %12 %13 OpBranchConditional %10 %12 %13
%12 = OpLabel %12 = OpLabel
OpBranch %11 OpBranch %11
%13 = OpLabel %13 = OpLabel

View File

@ -44,12 +44,12 @@
%mask_2 = OpVariable %_ptr_Output__arr_uint_uint_1 Output %15 %mask_2 = OpVariable %_ptr_Output__arr_uint_uint_1 Output %15
%FragIn = OpTypeStruct %float %uint %FragIn = OpTypeStruct %float %uint
%16 = OpTypeFunction %FragIn %FragIn %float %16 = OpTypeFunction %FragIn %FragIn %float
%uint_0 = OpConstant %uint 0 %23 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%void = OpTypeVoid %void = OpTypeVoid
%29 = OpTypeFunction %void %29 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %36 = OpConstantNull %int
%_ptr_Input_uint = OpTypePointer Input %uint %_ptr_Input_uint = OpTypePointer Input %uint
%_ptr_Output_uint = OpTypePointer Output %uint %_ptr_Output_uint = OpTypePointer Output %uint
%main_inner = OpFunction %FragIn None %16 %main_inner = OpFunction %FragIn None %16
@ -57,7 +57,7 @@
%b = OpFunctionParameter %float %b = OpFunctionParameter %float
%21 = OpLabel %21 = OpLabel
%22 = OpCompositeExtract %uint %in 1 %22 = OpCompositeExtract %uint %in 1
%24 = OpIEqual %bool %22 %uint_0 %24 = OpIEqual %bool %22 %23
OpSelectionMerge %26 None OpSelectionMerge %26 None
OpBranchConditional %24 %27 %26 OpBranchConditional %24 %27 %26
%27 = OpLabel %27 = OpLabel
@ -69,14 +69,14 @@
%main = OpFunction %void None %29 %main = OpFunction %void None %29
%32 = OpLabel %32 = OpLabel
%34 = OpLoad %float %a_1 %34 = OpLoad %float %a_1
%38 = OpAccessChain %_ptr_Input_uint %mask_1 %int_0 %38 = OpAccessChain %_ptr_Input_uint %mask_1 %36
%39 = OpLoad %uint %38 %39 = OpLoad %uint %38
%40 = OpCompositeConstruct %FragIn %34 %39 %40 = OpCompositeConstruct %FragIn %34 %39
%41 = OpLoad %float %b_1 %41 = OpLoad %float %b_1
%33 = OpFunctionCall %FragIn %main_inner %40 %41 %33 = OpFunctionCall %FragIn %main_inner %40 %41
%42 = OpCompositeExtract %float %33 0 %42 = OpCompositeExtract %float %33 0
OpStore %a_2 %42 OpStore %a_2 %42
%44 = OpAccessChain %_ptr_Output_uint %mask_2 %int_0 %44 = OpAccessChain %_ptr_Output_uint %mask_2 %36
%45 = OpCompositeExtract %uint %33 1 %45 = OpCompositeExtract %uint %33 1
OpStore %44 %45 OpStore %44 %45
OpReturn OpReturn

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 51 ; Bound: 50
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -28,9 +28,9 @@
%7 = OpConstantNull %int %7 = OpConstantNull %int
%value = OpVariable %_ptr_Output_int Output %7 %value = OpVariable %_ptr_Output_int Output %7
%bool = OpTypeBool %bool = OpTypeBool
%false = OpConstantFalse %bool %9 = OpConstantNull %bool
%_ptr_Private_bool = OpTypePointer Private %bool %_ptr_Private_bool = OpTypePointer Private %bool
%tint_discard = OpVariable %_ptr_Private_bool Private %false %tint_discard = OpVariable %_ptr_Private_bool Private %9
%12 = OpTypeFunction %int %int %12 = OpTypeFunction %int %int
%int_10 = OpConstant %int 10 %int_10 = OpConstant %int 10
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
@ -38,7 +38,6 @@
%21 = OpTypeFunction %void %21 = OpTypeFunction %void
%25 = OpTypeFunction %int %v3int %25 = OpTypeFunction %int %v3int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%int_0 = OpConstant %int 0
%f = OpFunction %int None %12 %f = OpFunction %int None %12
%x = OpFunctionParameter %int %x = OpFunctionParameter %int
%15 = OpLabel %15 = OpLabel
@ -75,23 +74,23 @@
%41 = OpFunctionCall %void %tint_discard_func %41 = OpFunctionCall %void %tint_discard_func
OpReturnValue %7 OpReturnValue %7
%39 = OpLabel %39 = OpLabel
%43 = OpIEqual %bool %36 %int_0 %42 = OpIEqual %bool %36 %7
OpSelectionMerge %44 None OpSelectionMerge %43 None
OpBranchConditional %43 %45 %44 OpBranchConditional %42 %44 %43
%45 = OpLabel
OpBranch %33
%44 = OpLabel %44 = OpLabel
OpBranch %33
%43 = OpLabel
OpBranch %34 OpBranch %34
%34 = OpLabel %34 = OpLabel
OpBranch %32 OpBranch %32
%33 = OpLabel %33 = OpLabel
%46 = OpLoad %int %y %45 = OpLoad %int %y
OpReturnValue %46 OpReturnValue %45
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %21 %main = OpFunction %void None %21
%48 = OpLabel %47 = OpLabel
%50 = OpLoad %v3int %x_1 %49 = OpLoad %v3int %x_1
%49 = OpFunctionCall %int %main_inner %50 %48 = OpFunctionCall %int %main_inner %49
OpStore %value %49 OpStore %value %48
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -12,9 +12,9 @@
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%int_0 = OpConstant %int 0 %7 = OpConstantNull %int
%f = OpFunction %void None %1 %f = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
%8 = OpSDiv %int %int_1 %int_0 %8 = OpSDiv %int %int_1 %7
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 20 ; Bound: 19
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -18,21 +18,20 @@
%v = OpVariable %_ptr_Private_float Private %4 %v = OpVariable %_ptr_Private_float Private %4
%void = OpTypeVoid %void = OpTypeVoid
%5 = OpTypeFunction %void %_ptr_Private_float %5 = OpTypeFunction %void %_ptr_Private_float
%float_0 = OpConstant %float 0 %11 = OpTypeFunction %void
%12 = OpTypeFunction %void
%x = OpFunction %void None %5 %x = OpFunction %void None %5
%p = OpFunctionParameter %_ptr_Private_float %p = OpFunctionParameter %_ptr_Private_float
%9 = OpLabel %9 = OpLabel
OpStore %p %float_0 OpStore %p %4
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%g = OpFunction %void None %12 %g = OpFunction %void None %11
%14 = OpLabel %13 = OpLabel
%15 = OpFunctionCall %void %x %v %14 = OpFunctionCall %void %x %v
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %12 %f = OpFunction %void None %11
%18 = OpLabel %17 = OpLabel
%19 = OpFunctionCall %void %g %18 = OpFunctionCall %void %g
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -106,7 +106,7 @@
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %63 = OpConstantNull %int
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_Private_float = OpTypePointer Private %float %_ptr_Private_float = OpTypePointer Private %float
@ -133,7 +133,7 @@
OpStore %p %56 OpStore %p %56
%59 = OpAccessChain %_ptr_Function_float %p %uint_0 %59 = OpAccessChain %_ptr_Function_float %p %uint_0
%60 = OpLoad %float %59 %60 = OpLoad %float %59
%65 = OpAccessChain %_ptr_Uniform_float %x_14 %uint_3 %int_0 %uint_0 %65 = OpAccessChain %_ptr_Uniform_float %x_14 %uint_3 %63 %uint_0
%66 = OpLoad %float %65 %66 = OpLoad %float %65
%69 = OpAccessChain %_ptr_Private_float %position %uint_1 %69 = OpAccessChain %_ptr_Private_float %position %uint_1
%70 = OpLoad %float %69 %70 = OpLoad %float %69

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 403 ; Bound: 402
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%65 = OpExtInstImport "GLSL.std.450" %65 = OpExtInstImport "GLSL.std.450"
@ -217,12 +217,11 @@
%void = OpTypeVoid %void = OpTypeVoid
%175 = OpTypeFunction %void %175 = OpTypeFunction %void
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%int_0 = OpConstant %int 0 %188 = OpConstantNull %int
%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%204 = OpConstantNull %int %204 = OpTypeFunction %void %v3uint
%205 = OpTypeFunction %void %v3uint
%bool = OpTypeBool %bool = OpTypeBool
%float_3 = OpConstant %float 3 %float_3 = OpConstant %float 3
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
@ -356,7 +355,7 @@
%157 = OpLabel %157 = OpLabel
%position_0 = OpVariable %_ptr_Function_v3float Function %50 %position_0 = OpVariable %_ptr_Function_v3float Function %50
%159 = OpIMul %uint %uint_3 %vertexIndex %159 = OpIMul %uint %uint_3 %vertexIndex
%160 = OpIAdd %uint %159 %uint_0 %160 = OpIAdd %uint %159 %141
%162 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %160 %162 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %160
%163 = OpLoad %float %162 %163 = OpLoad %float %162
%164 = OpIMul %uint %uint_3 %vertexIndex %164 = OpIMul %uint %uint_3 %vertexIndex
@ -379,30 +378,30 @@
%b53 = OpVariable %_ptr_Function_uint Function %141 %b53 = OpVariable %_ptr_Function_uint Function %141
%rwg = OpVariable %_ptr_Function_uint Function %141 %rwg = OpVariable %_ptr_Function_uint Function %141
%rb5 = OpVariable %_ptr_Function_float Function %75 %rb5 = OpVariable %_ptr_Function_float Function %75
%g55 = OpVariable %_ptr_Function_int Function %204 %g55 = OpVariable %_ptr_Function_int Function %188
%179 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %179 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%180 = OpLoad %uint %179 %180 = OpLoad %uint %179
OpStore %g42 %180 OpStore %g42 %180
%183 = OpAccessChain %_ptr_StorageBuffer_uint %dbg %uint_5 %183 = OpAccessChain %_ptr_StorageBuffer_uint %dbg %uint_5
%184 = OpLoad %uint %183 %184 = OpLoad %uint %183
OpStore %kj6 %184 OpStore %kj6 %184
%190 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %int_0 %190 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %188
%186 = OpAtomicLoad %uint %190 %uint_1 %uint_0 %186 = OpAtomicLoad %uint %190 %uint_1 %uint_0
OpStore %b53 %186 OpStore %b53 %186
%192 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %int_0 %192 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %188
%193 = OpLoad %uint %192 %193 = OpLoad %uint %192
OpStore %rwg %193 OpStore %rwg %193
%195 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %int_0 %195 = OpAccessChain %_ptr_StorageBuffer_float %positions %uint_0 %188
%196 = OpLoad %float %195 %196 = OpLoad %float %195
OpStore %rb5 %196 OpStore %rb5 %196
%201 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %int_0 %201 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %188
%198 = OpAtomicLoad %int %201 %uint_1 %uint_0 %198 = OpAtomicLoad %int %201 %uint_1 %uint_0
OpStore %g55 %198 OpStore %g55 %198
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_count_inner = OpFunction %void None %205 %main_count_inner = OpFunction %void None %204
%GlobalInvocationID = OpFunctionParameter %v3uint %GlobalInvocationID = OpFunctionParameter %v3uint
%208 = OpLabel %207 = OpLabel
%triangleIndex = OpVariable %_ptr_Function_uint Function %141 %triangleIndex = OpVariable %_ptr_Function_uint Function %141
%i0 = OpVariable %_ptr_Function_uint Function %141 %i0 = OpVariable %_ptr_Function_uint Function %141
%i1 = OpVariable %_ptr_Function_uint Function %141 %i1 = OpVariable %_ptr_Function_uint Function %141
@ -410,160 +409,160 @@
%p0 = OpVariable %_ptr_Function_v3float Function %50 %p0 = OpVariable %_ptr_Function_v3float Function %50
%p1 = OpVariable %_ptr_Function_v3float Function %50 %p1 = OpVariable %_ptr_Function_v3float Function %50
%p2 = OpVariable %_ptr_Function_v3float Function %50 %p2 = OpVariable %_ptr_Function_v3float Function %50
%253 = OpVariable %_ptr_Function_v3float Function %50 %252 = OpVariable %_ptr_Function_v3float Function %50
%center = OpVariable %_ptr_Function_v3float Function %50 %center = OpVariable %_ptr_Function_v3float Function %50
%voxelPos_0 = OpVariable %_ptr_Function_v3float Function %50 %voxelPos_0 = OpVariable %_ptr_Function_v3float Function %50
%voxelIndex = OpVariable %_ptr_Function_uint Function %141 %voxelIndex = OpVariable %_ptr_Function_uint Function %141
%acefg = OpVariable %_ptr_Function_uint Function %141 %acefg = OpVariable %_ptr_Function_uint Function %141
%209 = OpCompositeExtract %uint %GlobalInvocationID 0 %208 = OpCompositeExtract %uint %GlobalInvocationID 0
OpStore %triangleIndex %209 OpStore %triangleIndex %208
%211 = OpLoad %uint %triangleIndex %210 = OpLoad %uint %triangleIndex
%212 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %211 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%213 = OpLoad %uint %212 %212 = OpLoad %uint %211
%214 = OpUGreaterThanEqual %bool %211 %213 %213 = OpUGreaterThanEqual %bool %210 %212
OpSelectionMerge %216 None OpSelectionMerge %215 None
OpBranchConditional %214 %217 %216 OpBranchConditional %213 %216 %215
%217 = OpLabel
OpReturn
%216 = OpLabel %216 = OpLabel
%218 = OpFunctionCall %void %doIgnore OpReturn
%219 = OpLoad %uint %triangleIndex %215 = OpLabel
%220 = OpIMul %uint %uint_3 %219 %217 = OpFunctionCall %void %doIgnore
%221 = OpIAdd %uint %220 %uint_0 %218 = OpLoad %uint %triangleIndex
%222 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %221 %219 = OpIMul %uint %uint_3 %218
%223 = OpLoad %uint %222 %220 = OpIAdd %uint %219 %141
OpStore %i0 %223 %221 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %220
%225 = OpLoad %uint %triangleIndex %222 = OpLoad %uint %221
%226 = OpIMul %uint %uint_3 %225 OpStore %i0 %222
%227 = OpIAdd %uint %226 %uint_1 %224 = OpLoad %uint %triangleIndex
%228 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %227 %225 = OpIMul %uint %uint_3 %224
%229 = OpLoad %uint %228 %226 = OpIAdd %uint %225 %uint_1
OpStore %i1 %229 %227 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %226
%231 = OpLoad %uint %triangleIndex %228 = OpLoad %uint %227
%232 = OpIMul %uint %uint_3 %231 OpStore %i1 %228
%233 = OpIAdd %uint %232 %uint_2 %230 = OpLoad %uint %triangleIndex
%234 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %233 %231 = OpIMul %uint %uint_3 %230
%235 = OpLoad %uint %234 %232 = OpIAdd %uint %231 %uint_2
OpStore %i2 %235 %233 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %232
%238 = OpLoad %uint %i0 %234 = OpLoad %uint %233
%237 = OpFunctionCall %v3float %loadPosition %238 OpStore %i2 %234
OpStore %p0 %237 %237 = OpLoad %uint %i0
%241 = OpLoad %uint %i1 %236 = OpFunctionCall %v3float %loadPosition %237
%240 = OpFunctionCall %v3float %loadPosition %241 OpStore %p0 %236
OpStore %p1 %240 %240 = OpLoad %uint %i1
%244 = OpLoad %uint %i2 %239 = OpFunctionCall %v3float %loadPosition %240
%243 = OpFunctionCall %v3float %loadPosition %244 OpStore %p1 %239
OpStore %p2 %243 %243 = OpLoad %uint %i2
%246 = OpLoad %v3float %p0 %242 = OpFunctionCall %v3float %loadPosition %243
%247 = OpLoad %v3float %p1 OpStore %p2 %242
%248 = OpFAdd %v3float %246 %247 %245 = OpLoad %v3float %p0
%249 = OpLoad %v3float %p2 %246 = OpLoad %v3float %p1
%250 = OpFAdd %v3float %248 %249 %247 = OpFAdd %v3float %245 %246
%254 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3 %248 = OpLoad %v3float %p2
%252 = OpFDiv %v3float %250 %254 %249 = OpFAdd %v3float %247 %248
OpStore %center %252 %253 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3
%257 = OpLoad %v3float %center %251 = OpFDiv %v3float %249 %253
%256 = OpFunctionCall %v3float %toVoxelPos %257 OpStore %center %251
OpStore %voxelPos_0 %256 %256 = OpLoad %v3float %center
%260 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %255 = OpFunctionCall %v3float %toVoxelPos %256
%261 = OpLoad %uint %260 OpStore %voxelPos_0 %255
%262 = OpLoad %v3float %voxelPos_0 %259 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%259 = OpFunctionCall %uint %toIndex1D %261 %262 %260 = OpLoad %uint %259
OpStore %voxelIndex %259 %261 = OpLoad %v3float %voxelPos_0
%266 = OpLoad %uint %voxelIndex %258 = OpFunctionCall %uint %toIndex1D %260 %261
%267 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %266 OpStore %voxelIndex %258
%264 = OpAtomicIAdd %uint %267 %uint_1 %uint_0 %uint_1 %265 = OpLoad %uint %voxelIndex
OpStore %acefg %264 %266 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %265
%269 = OpLoad %uint %triangleIndex %263 = OpAtomicIAdd %uint %266 %uint_1 %uint_0 %uint_1
%270 = OpIEqual %bool %269 %uint_0 OpStore %acefg %263
OpSelectionMerge %271 None %268 = OpLoad %uint %triangleIndex
OpBranchConditional %270 %272 %271 %269 = OpIEqual %bool %268 %141
%272 = OpLabel OpSelectionMerge %270 None
%273 = OpAccessChain %_ptr_StorageBuffer_uint %dbg %uint_4 OpBranchConditional %269 %271 %270
%274 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%275 = OpLoad %uint %274
OpStore %273 %275
%277 = OpAccessChain %_ptr_StorageBuffer_float %dbg %uint_8
%278 = OpAccessChain %_ptr_Function_float %center %uint_0
%279 = OpLoad %float %278
OpStore %277 %279
%281 = OpAccessChain %_ptr_StorageBuffer_float %dbg %uint_9
%282 = OpAccessChain %_ptr_Function_float %center %uint_1
%283 = OpLoad %float %282
OpStore %281 %283
%285 = OpAccessChain %_ptr_StorageBuffer_float %dbg %uint_10
%286 = OpAccessChain %_ptr_Function_float %center %uint_2
%287 = OpLoad %float %286
OpStore %285 %287
OpBranch %271
%271 = OpLabel %271 = OpLabel
%272 = OpAccessChain %_ptr_StorageBuffer_uint %dbg %uint_4
%273 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%274 = OpLoad %uint %273
OpStore %272 %274
%276 = OpAccessChain %_ptr_StorageBuffer_float %dbg %uint_8
%277 = OpAccessChain %_ptr_Function_float %center %uint_0
%278 = OpLoad %float %277
OpStore %276 %278
%280 = OpAccessChain %_ptr_StorageBuffer_float %dbg %uint_9
%281 = OpAccessChain %_ptr_Function_float %center %uint_1
%282 = OpLoad %float %281
OpStore %280 %282
%284 = OpAccessChain %_ptr_StorageBuffer_float %dbg %uint_10
%285 = OpAccessChain %_ptr_Function_float %center %uint_2
%286 = OpLoad %float %285
OpStore %284 %286
OpBranch %270
%270 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_count = OpFunction %void None %175 %main_count = OpFunction %void None %175
%289 = OpLabel %288 = OpLabel
%291 = OpLoad %v3uint %GlobalInvocationID_1 %290 = OpLoad %v3uint %GlobalInvocationID_1
%290 = OpFunctionCall %void %main_count_inner %291 %289 = OpFunctionCall %void %main_count_inner %290
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_create_lut_inner = OpFunction %void None %205 %main_create_lut_inner = OpFunction %void None %204
%GlobalInvocationID_0 = OpFunctionParameter %v3uint %GlobalInvocationID_0 = OpFunctionParameter %v3uint
%294 = OpLabel %293 = OpLabel
%voxelIndex_0 = OpVariable %_ptr_Function_uint Function %141 %voxelIndex_0 = OpVariable %_ptr_Function_uint Function %141
%maxVoxels = OpVariable %_ptr_Function_uint Function %141 %maxVoxels = OpVariable %_ptr_Function_uint Function %141
%numTriangles = OpVariable %_ptr_Function_uint Function %141 %numTriangles = OpVariable %_ptr_Function_uint Function %141
%offset = OpVariable %_ptr_Function_int Function %204 %offset = OpVariable %_ptr_Function_int Function %188
%295 = OpCompositeExtract %uint %GlobalInvocationID_0 0 %294 = OpCompositeExtract %uint %GlobalInvocationID_0 0
OpStore %voxelIndex_0 %295 OpStore %voxelIndex_0 %294
%297 = OpFunctionCall %void %doIgnore %296 = OpFunctionCall %void %doIgnore
%298 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %297 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%299 = OpLoad %uint %298 %298 = OpLoad %uint %297
%300 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %299 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%301 = OpLoad %uint %300 %300 = OpLoad %uint %299
%302 = OpIMul %uint %299 %301 %301 = OpIMul %uint %298 %300
%303 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %302 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%304 = OpLoad %uint %303 %303 = OpLoad %uint %302
%305 = OpIMul %uint %302 %304 %304 = OpIMul %uint %301 %303
OpStore %maxVoxels %305 OpStore %maxVoxels %304
%307 = OpLoad %uint %voxelIndex_0 %306 = OpLoad %uint %voxelIndex_0
%308 = OpLoad %uint %maxVoxels %307 = OpLoad %uint %maxVoxels
%309 = OpUGreaterThanEqual %bool %307 %308 %308 = OpUGreaterThanEqual %bool %306 %307
OpSelectionMerge %310 None OpSelectionMerge %309 None
OpBranchConditional %309 %311 %310 OpBranchConditional %308 %310 %309
%311 = OpLabel
OpReturn
%310 = OpLabel %310 = OpLabel
%314 = OpLoad %uint %voxelIndex_0 OpReturn
%315 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %314 %309 = OpLabel
%312 = OpAtomicLoad %uint %315 %uint_1 %uint_0 %313 = OpLoad %uint %voxelIndex_0
OpStore %numTriangles %312 %314 = OpAccessChain %_ptr_StorageBuffer_uint_0 %counters %uint_0 %313
%311 = OpAtomicLoad %uint %314 %uint_1 %uint_0
OpStore %numTriangles %311
OpStore %offset %int_n1 OpStore %offset %int_n1
%319 = OpLoad %uint %numTriangles %318 = OpLoad %uint %numTriangles
%320 = OpUGreaterThan %bool %319 %uint_0 %319 = OpUGreaterThan %bool %318 %141
OpSelectionMerge %321 None OpSelectionMerge %320 None
OpBranchConditional %320 %322 %321 OpBranchConditional %319 %321 %320
%322 = OpLabel
%325 = OpAccessChain %_ptr_StorageBuffer_uint_0 %dbg %uint_0
%326 = OpLoad %uint %numTriangles
%323 = OpAtomicIAdd %uint %325 %uint_1 %uint_0 %326
%327 = OpBitcast %int %323
OpStore %offset %327
OpBranch %321
%321 = OpLabel %321 = OpLabel
%330 = OpLoad %uint %voxelIndex_0 %324 = OpAccessChain %_ptr_StorageBuffer_uint_0 %dbg %uint_0
%331 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %330 %325 = OpLoad %uint %numTriangles
%332 = OpLoad %int %offset %322 = OpAtomicIAdd %uint %324 %uint_1 %uint_0 %325
OpAtomicStore %331 %uint_1 %uint_0 %332 %326 = OpBitcast %int %322
OpStore %offset %326
OpBranch %320
%320 = OpLabel
%329 = OpLoad %uint %voxelIndex_0
%330 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %329
%331 = OpLoad %int %offset
OpAtomicStore %330 %uint_1 %uint_0 %331
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_create_lut = OpFunction %void None %175 %main_create_lut = OpFunction %void None %175
%334 = OpLabel %333 = OpLabel
%336 = OpLoad %v3uint %GlobalInvocationID_2 %335 = OpLoad %v3uint %GlobalInvocationID_2
%335 = OpFunctionCall %void %main_create_lut_inner %336 %334 = OpFunctionCall %void %main_create_lut_inner %335
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_sort_triangles_inner = OpFunction %void None %205 %main_sort_triangles_inner = OpFunction %void None %204
%GlobalInvocationID_4 = OpFunctionParameter %v3uint %GlobalInvocationID_4 = OpFunctionParameter %v3uint
%339 = OpLabel %338 = OpLabel
%triangleIndex_0 = OpVariable %_ptr_Function_uint Function %141 %triangleIndex_0 = OpVariable %_ptr_Function_uint Function %141
%i0_0 = OpVariable %_ptr_Function_uint Function %141 %i0_0 = OpVariable %_ptr_Function_uint Function %141
%i1_0 = OpVariable %_ptr_Function_uint Function %141 %i1_0 = OpVariable %_ptr_Function_uint Function %141
@ -571,75 +570,75 @@
%p0_0 = OpVariable %_ptr_Function_v3float Function %50 %p0_0 = OpVariable %_ptr_Function_v3float Function %50
%p1_0 = OpVariable %_ptr_Function_v3float Function %50 %p1_0 = OpVariable %_ptr_Function_v3float Function %50
%p2_0 = OpVariable %_ptr_Function_v3float Function %50 %p2_0 = OpVariable %_ptr_Function_v3float Function %50
%382 = OpVariable %_ptr_Function_v3float Function %50 %381 = OpVariable %_ptr_Function_v3float Function %50
%center_0 = OpVariable %_ptr_Function_v3float Function %50 %center_0 = OpVariable %_ptr_Function_v3float Function %50
%voxelPos_1 = OpVariable %_ptr_Function_v3float Function %50 %voxelPos_1 = OpVariable %_ptr_Function_v3float Function %50
%voxelIndex_1 = OpVariable %_ptr_Function_uint Function %141 %voxelIndex_1 = OpVariable %_ptr_Function_uint Function %141
%triangleOffset = OpVariable %_ptr_Function_int Function %204 %triangleOffset = OpVariable %_ptr_Function_int Function %188
%340 = OpCompositeExtract %uint %GlobalInvocationID_4 0 %339 = OpCompositeExtract %uint %GlobalInvocationID_4 0
OpStore %triangleIndex_0 %340 OpStore %triangleIndex_0 %339
%342 = OpFunctionCall %void %doIgnore %341 = OpFunctionCall %void %doIgnore
%343 = OpLoad %uint %triangleIndex_0 %342 = OpLoad %uint %triangleIndex_0
%344 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %343 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%345 = OpLoad %uint %344 %344 = OpLoad %uint %343
%346 = OpUGreaterThanEqual %bool %343 %345 %345 = OpUGreaterThanEqual %bool %342 %344
OpSelectionMerge %347 None OpSelectionMerge %346 None
OpBranchConditional %346 %348 %347 OpBranchConditional %345 %347 %346
%348 = OpLabel
OpReturn
%347 = OpLabel %347 = OpLabel
%349 = OpLoad %uint %triangleIndex_0 OpReturn
%350 = OpIMul %uint %uint_3 %349 %346 = OpLabel
%351 = OpIAdd %uint %350 %uint_0 %348 = OpLoad %uint %triangleIndex_0
%352 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %351 %349 = OpIMul %uint %uint_3 %348
%353 = OpLoad %uint %352 %350 = OpIAdd %uint %349 %141
OpStore %i0_0 %353 %351 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %350
%355 = OpLoad %uint %triangleIndex_0 %352 = OpLoad %uint %351
%356 = OpIMul %uint %uint_3 %355 OpStore %i0_0 %352
%357 = OpIAdd %uint %356 %uint_1 %354 = OpLoad %uint %triangleIndex_0
%358 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %357 %355 = OpIMul %uint %uint_3 %354
%359 = OpLoad %uint %358 %356 = OpIAdd %uint %355 %uint_1
OpStore %i1_0 %359 %357 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %356
%361 = OpLoad %uint %triangleIndex_0 %358 = OpLoad %uint %357
%362 = OpIMul %uint %uint_3 %361 OpStore %i1_0 %358
%363 = OpIAdd %uint %362 %uint_2 %360 = OpLoad %uint %triangleIndex_0
%364 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %363 %361 = OpIMul %uint %uint_3 %360
%365 = OpLoad %uint %364 %362 = OpIAdd %uint %361 %uint_2
OpStore %i2_0 %365 %363 = OpAccessChain %_ptr_StorageBuffer_uint %indices %uint_0 %362
%368 = OpLoad %uint %i0_0 %364 = OpLoad %uint %363
%367 = OpFunctionCall %v3float %loadPosition %368 OpStore %i2_0 %364
OpStore %p0_0 %367 %367 = OpLoad %uint %i0_0
%371 = OpLoad %uint %i1_0 %366 = OpFunctionCall %v3float %loadPosition %367
%370 = OpFunctionCall %v3float %loadPosition %371 OpStore %p0_0 %366
OpStore %p1_0 %370 %370 = OpLoad %uint %i1_0
%374 = OpLoad %uint %i2_0 %369 = OpFunctionCall %v3float %loadPosition %370
%373 = OpFunctionCall %v3float %loadPosition %374 OpStore %p1_0 %369
OpStore %p2_0 %373 %373 = OpLoad %uint %i2_0
%376 = OpLoad %v3float %p0_0 %372 = OpFunctionCall %v3float %loadPosition %373
%377 = OpLoad %v3float %p1_0 OpStore %p2_0 %372
%378 = OpFAdd %v3float %376 %377 %375 = OpLoad %v3float %p0_0
%379 = OpLoad %v3float %p2_0 %376 = OpLoad %v3float %p1_0
%380 = OpFAdd %v3float %378 %379 %377 = OpFAdd %v3float %375 %376
%383 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3 %378 = OpLoad %v3float %p2_0
%381 = OpFDiv %v3float %380 %383 %379 = OpFAdd %v3float %377 %378
OpStore %center_0 %381 %382 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3
%386 = OpLoad %v3float %center_0 %380 = OpFDiv %v3float %379 %382
%385 = OpFunctionCall %v3float %toVoxelPos %386 OpStore %center_0 %380
OpStore %voxelPos_1 %385 %385 = OpLoad %v3float %center_0
%389 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %384 = OpFunctionCall %v3float %toVoxelPos %385
%390 = OpLoad %uint %389 OpStore %voxelPos_1 %384
%391 = OpLoad %v3float %voxelPos_1 %388 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%388 = OpFunctionCall %uint %toIndex1D %390 %391 %389 = OpLoad %uint %388
OpStore %voxelIndex_1 %388 %390 = OpLoad %v3float %voxelPos_1
%395 = OpLoad %uint %voxelIndex_1 %387 = OpFunctionCall %uint %toIndex1D %389 %390
%396 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %395 OpStore %voxelIndex_1 %387
%393 = OpAtomicIAdd %int %396 %uint_1 %uint_0 %int_1 %394 = OpLoad %uint %voxelIndex_1
OpStore %triangleOffset %393 %395 = OpAccessChain %_ptr_StorageBuffer_int %LUT %uint_0 %394
%392 = OpAtomicIAdd %int %395 %uint_1 %uint_0 %int_1
OpStore %triangleOffset %392
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_sort_triangles = OpFunction %void None %175 %main_sort_triangles = OpFunction %void None %175
%400 = OpLabel %399 = OpLabel
%402 = OpLoad %v3uint %GlobalInvocationID_3 %401 = OpLoad %v3uint %GlobalInvocationID_3
%401 = OpFunctionCall %void %main_sort_triangles_inner %402 %400 = OpFunctionCall %void %main_sort_triangles_inner %401
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -13,10 +13,10 @@ bug/tint/1118.wgsl:46:19 note: reading from module-scope private variable 'fClip
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 198 ; Bound: 195
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%73 = OpExtInstImport "GLSL.std.450" %71 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %fClipDistance3_param_1 %fClipDistance4_param_1 %glFragColor_1_1 OpEntryPoint Fragment %main "main" %fClipDistance3_param_1 %fClipDistance4_param_1 %glFragColor_1_1
OpExecutionMode %main OriginUpperLeft OpExecutionMode %main OriginUpperLeft
@ -112,9 +112,9 @@ bug/tint/1118.wgsl:46:19 note: reading from module-scope private variable 'fClip
%_ptr_Private_v4float = OpTypePointer Private %v4float %_ptr_Private_v4float = OpTypePointer Private %v4float
%glFragColor = OpVariable %_ptr_Private_v4float Private %8 %glFragColor = OpVariable %_ptr_Private_v4float Private %8
%bool = OpTypeBool %bool = OpTypeBool
%false = OpConstantFalse %bool %26 = OpConstantNull %bool
%_ptr_Private_bool = OpTypePointer Private %bool %_ptr_Private_bool = OpTypePointer Private %bool
%tint_discard = OpVariable %_ptr_Private_bool Private %false %tint_discard = OpVariable %_ptr_Private_bool Private %26
%void = OpTypeVoid %void = OpTypeVoid
%29 = OpTypeFunction %void %29 = OpTypeFunction %void
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
@ -124,25 +124,22 @@ bug/tint/1118.wgsl:46:19 note: reading from module-scope private variable 'fClip
%v2float = OpTypeVector %float 2 %v2float = OpTypeVector %float 2
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%45 = OpConstantNull %v2float %45 = OpConstantNull %v2float
%float_0 = OpConstant %float 0
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%71 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%80 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %78 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%96 = OpConstantComposite %v2float %float_0 %float_0 %110 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%97 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %float_0 = OpConstant %float 0
%114 = OpConstantComposite %v3float %float_1 %float_1 %float_1 %112 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
%115 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_1
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%main_out = OpTypeStruct %v4float %main_out = OpTypeStruct %v4float
%178 = OpTypeFunction %main_out %float %float %175 = OpTypeFunction %main_out %float %float
%189 = OpConstantNull %main_out %186 = OpConstantNull %main_out
%main_1 = OpFunction %void None %29 %main_1 = OpFunction %void None %29
%32 = OpLabel %32 = OpLabel
%viewDirectionW = OpVariable %_ptr_Function_v3float Function %35 %viewDirectionW = OpVariable %_ptr_Function_v3float Function %35
@ -162,166 +159,166 @@ bug/tint/1118.wgsl:46:19 note: reading from module-scope private variable 'fClip
%finalSpecular = OpVariable %_ptr_Function_v3float Function %35 %finalSpecular = OpVariable %_ptr_Function_v3float Function %35
%color = OpVariable %_ptr_Function_v4float Function %8 %color = OpVariable %_ptr_Function_v4float Function %8
%56 = OpLoad %float %fClipDistance3 %56 = OpLoad %float %fClipDistance3
%58 = OpFOrdGreaterThan %bool %56 %float_0 %57 = OpFOrdGreaterThan %bool %56 %11
OpSelectionMerge %59 None OpSelectionMerge %58 None
OpBranchConditional %58 %60 %59 OpBranchConditional %57 %59 %58
%60 = OpLabel
OpStore %tint_discard %true
OpReturn
%59 = OpLabel %59 = OpLabel
%62 = OpLoad %float %fClipDistance4
%63 = OpFOrdGreaterThan %bool %62 %float_0
OpSelectionMerge %64 None
OpBranchConditional %63 %65 %64
%65 = OpLabel
OpStore %tint_discard %true OpStore %tint_discard %true
OpReturn OpReturn
%58 = OpLabel
%61 = OpLoad %float %fClipDistance4
%62 = OpFOrdGreaterThan %bool %61 %11
OpSelectionMerge %63 None
OpBranchConditional %62 %64 %63
%64 = OpLabel %64 = OpLabel
%69 = OpAccessChain %_ptr_Uniform_v4float %x_29 %uint_0 OpStore %tint_discard %true
%70 = OpLoad %v4float %69 OpReturn
%74 = OpCompositeExtract %float %70 0 %63 = OpLabel
%75 = OpCompositeExtract %float %70 1 %68 = OpAccessChain %_ptr_Uniform_v4float %x_29 %uint_0
%76 = OpCompositeExtract %float %70 2 %69 = OpLoad %v4float %68
%77 = OpCompositeConstruct %v3float %74 %75 %76 %72 = OpCompositeExtract %float %69 0
%78 = OpFSub %v3float %77 %71 %73 = OpCompositeExtract %float %69 1
%72 = OpExtInst %v3float %73 Normalize %78 %74 = OpCompositeExtract %float %69 2
OpStore %viewDirectionW %72 %75 = OpCompositeConstruct %v3float %72 %73 %74
OpStore %baseColor %80 %76 = OpFSub %v3float %75 %35
%81 = OpAccessChain %_ptr_Uniform_v4float %x_49 %uint_0 %70 = OpExtInst %v3float %71 Normalize %76
%82 = OpLoad %v4float %81 OpStore %viewDirectionW %70
%83 = OpCompositeExtract %float %82 0 OpStore %baseColor %78
%84 = OpCompositeExtract %float %82 1 %79 = OpAccessChain %_ptr_Uniform_v4float %x_49 %uint_0
%85 = OpCompositeExtract %float %82 2 %80 = OpLoad %v4float %79
%86 = OpCompositeConstruct %v3float %83 %84 %85 %81 = OpCompositeExtract %float %80 0
OpStore %diffuseColor %86 %82 = OpCompositeExtract %float %80 1
%89 = OpAccessChain %_ptr_Uniform_float %x_49 %uint_0 %uint_3 %83 = OpCompositeExtract %float %80 2
%90 = OpLoad %float %89 %84 = OpCompositeConstruct %v3float %81 %82 %83
OpStore %alpha %90 OpStore %diffuseColor %84
%94 = OpDPdx %v3float %71 %87 = OpAccessChain %_ptr_Uniform_float %x_49 %uint_0 %uint_3
%95 = OpDPdy %v3float %71 %88 = OpLoad %float %87
%93 = OpExtInst %v3float %73 Cross %94 %95 OpStore %alpha %88
%92 = OpFNegate %v3float %93 %92 = OpDPdx %v3float %35
%91 = OpExtInst %v3float %73 Normalize %92 %93 = OpDPdy %v3float %35
OpStore %normalW %91 %91 = OpExtInst %v3float %71 Cross %92 %93
OpStore %uvOffset %96 %90 = OpFNegate %v3float %91
%98 = OpLoad %v4float %baseColor %89 = OpExtInst %v3float %71 Normalize %90
%99 = OpCompositeExtract %float %98 0 OpStore %normalW %89
%100 = OpCompositeExtract %float %98 1 OpStore %uvOffset %45
%101 = OpCompositeExtract %float %98 2 %94 = OpLoad %v4float %baseColor
%95 = OpCompositeExtract %float %94 0
%96 = OpCompositeExtract %float %94 1
%97 = OpCompositeExtract %float %94 2
%98 = OpCompositeConstruct %v3float %95 %96 %97
%99 = OpCompositeExtract %float %8 0
%100 = OpCompositeExtract %float %8 1
%101 = OpCompositeExtract %float %8 2
%102 = OpCompositeConstruct %v3float %99 %100 %101 %102 = OpCompositeConstruct %v3float %99 %100 %101
%103 = OpCompositeExtract %float %97 0 %103 = OpFMul %v3float %98 %102
%104 = OpCompositeExtract %float %97 1 %104 = OpLoad %v4float %baseColor
%105 = OpCompositeExtract %float %97 2 %105 = OpCompositeExtract %float %103 0
%106 = OpCompositeConstruct %v3float %103 %104 %105 %106 = OpCompositeExtract %float %103 1
%107 = OpFMul %v3float %102 %106 %107 = OpCompositeExtract %float %103 2
%108 = OpLoad %v4float %baseColor %108 = OpCompositeExtract %float %104 3
%109 = OpCompositeExtract %float %107 0 %109 = OpCompositeConstruct %v4float %105 %106 %107 %108
%110 = OpCompositeExtract %float %107 1 OpStore %baseColor %109
%111 = OpCompositeExtract %float %107 2 OpStore %baseAmbientColor %110
%112 = OpCompositeExtract %float %108 3 OpStore %glossiness %11
%113 = OpCompositeConstruct %v4float %109 %110 %111 %112 OpStore %diffuseBase %35
OpStore %baseColor %113
OpStore %baseAmbientColor %114
OpStore %glossiness %float_0
OpStore %diffuseBase %71
OpStore %shadow %float_1 OpStore %shadow %float_1
OpStore %refractionColor %115 OpStore %refractionColor %112
OpStore %reflectionColor %115 OpStore %reflectionColor %112
%117 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_3 %114 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_3
%118 = OpLoad %v3float %117 %115 = OpLoad %v3float %114
OpStore %emissiveColor %118 OpStore %emissiveColor %115
%119 = OpLoad %v3float %diffuseBase %116 = OpLoad %v3float %diffuseBase
%120 = OpLoad %v3float %diffuseColor %117 = OpLoad %v3float %diffuseColor
%121 = OpLoad %v3float %emissiveColor %118 = OpLoad %v3float %emissiveColor
%123 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_1 %120 = OpAccessChain %_ptr_Uniform_v3float %x_49 %uint_1
%124 = OpLoad %v3float %123 %121 = OpLoad %v3float %120
%125 = OpLoad %v4float %baseColor %122 = OpLoad %v4float %baseColor
%127 = OpFMul %v3float %119 %120 %124 = OpFMul %v3float %116 %117
%128 = OpFAdd %v3float %127 %121 %125 = OpFAdd %v3float %124 %118
%129 = OpFAdd %v3float %128 %124 %126 = OpFAdd %v3float %125 %121
%126 = OpExtInst %v3float %73 NClamp %129 %71 %114 %123 = OpExtInst %v3float %71 NClamp %126 %35 %110
%130 = OpCompositeExtract %float %125 0 %127 = OpCompositeExtract %float %122 0
%131 = OpCompositeExtract %float %125 1 %128 = OpCompositeExtract %float %122 1
%132 = OpCompositeExtract %float %125 2 %129 = OpCompositeExtract %float %122 2
%133 = OpCompositeConstruct %v3float %130 %131 %132 %130 = OpCompositeConstruct %v3float %127 %128 %129
%134 = OpFMul %v3float %126 %133 %131 = OpFMul %v3float %123 %130
OpStore %finalDiffuse %134 OpStore %finalDiffuse %131
OpStore %finalSpecular %71 OpStore %finalSpecular %35
%135 = OpLoad %v3float %finalDiffuse %132 = OpLoad %v3float %finalDiffuse
%136 = OpLoad %v3float %baseAmbientColor %133 = OpLoad %v3float %baseAmbientColor
%137 = OpLoad %v3float %finalSpecular %134 = OpLoad %v3float %finalSpecular
%138 = OpLoad %v4float %reflectionColor %135 = OpLoad %v4float %reflectionColor
%139 = OpLoad %v4float %refractionColor %136 = OpLoad %v4float %refractionColor
%140 = OpFMul %v3float %135 %136 %137 = OpFMul %v3float %132 %133
%141 = OpFAdd %v3float %140 %137 %138 = OpFAdd %v3float %137 %134
%142 = OpCompositeExtract %float %138 0 %139 = OpCompositeExtract %float %135 0
%143 = OpCompositeExtract %float %138 1 %140 = OpCompositeExtract %float %135 1
%144 = OpCompositeExtract %float %138 2 %141 = OpCompositeExtract %float %135 2
%145 = OpCompositeConstruct %v3float %142 %143 %144 %142 = OpCompositeConstruct %v3float %139 %140 %141
%146 = OpFAdd %v3float %141 %145 %143 = OpFAdd %v3float %138 %142
%147 = OpCompositeExtract %float %139 0 %144 = OpCompositeExtract %float %136 0
%148 = OpCompositeExtract %float %139 1 %145 = OpCompositeExtract %float %136 1
%149 = OpCompositeExtract %float %139 2 %146 = OpCompositeExtract %float %136 2
%150 = OpCompositeConstruct %v3float %147 %148 %149 %147 = OpCompositeConstruct %v3float %144 %145 %146
%151 = OpFAdd %v3float %146 %150 %148 = OpFAdd %v3float %143 %147
%152 = OpLoad %float %alpha %149 = OpLoad %float %alpha
%153 = OpCompositeExtract %float %151 0 %150 = OpCompositeExtract %float %148 0
%154 = OpCompositeExtract %float %151 1 %151 = OpCompositeExtract %float %148 1
%155 = OpCompositeExtract %float %151 2 %152 = OpCompositeExtract %float %148 2
%156 = OpCompositeConstruct %v4float %153 %154 %155 %152 %153 = OpCompositeConstruct %v4float %150 %151 %152 %149
OpStore %color %156 OpStore %color %153
%157 = OpLoad %v4float %color %154 = OpLoad %v4float %color
%159 = OpCompositeExtract %float %157 0 %156 = OpCompositeExtract %float %154 0
%160 = OpCompositeExtract %float %157 1 %157 = OpCompositeExtract %float %154 1
%161 = OpCompositeExtract %float %157 2 %158 = OpCompositeExtract %float %154 2
%162 = OpCompositeConstruct %v3float %159 %160 %161 %159 = OpCompositeConstruct %v3float %156 %157 %158
%158 = OpExtInst %v3float %73 NMax %162 %71 %155 = OpExtInst %v3float %71 NMax %159 %35
%163 = OpLoad %v4float %color %160 = OpLoad %v4float %color
%164 = OpCompositeExtract %float %158 0 %161 = OpCompositeExtract %float %155 0
%165 = OpCompositeExtract %float %158 1 %162 = OpCompositeExtract %float %155 1
%166 = OpCompositeExtract %float %158 2 %163 = OpCompositeExtract %float %155 2
%167 = OpCompositeExtract %float %163 3 %164 = OpCompositeExtract %float %160 3
%168 = OpCompositeConstruct %v4float %164 %165 %166 %167 %165 = OpCompositeConstruct %v4float %161 %162 %163 %164
OpStore %color %168 OpStore %color %165
%169 = OpAccessChain %_ptr_Uniform_float %x_137 %uint_0 %166 = OpAccessChain %_ptr_Uniform_float %x_137 %uint_0
%170 = OpLoad %float %169 %167 = OpLoad %float %166
%171 = OpAccessChain %_ptr_Function_float %color %uint_3 %168 = OpAccessChain %_ptr_Function_float %color %uint_3
%172 = OpLoad %float %171 %169 = OpLoad %float %168
%173 = OpAccessChain %_ptr_Function_float %color %uint_3 %170 = OpAccessChain %_ptr_Function_float %color %uint_3
%174 = OpFMul %float %172 %170 %171 = OpFMul %float %169 %167
OpStore %173 %174 OpStore %170 %171
%175 = OpLoad %v4float %color %172 = OpLoad %v4float %color
OpStore %glFragColor %175 OpStore %glFragColor %172
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%tint_discard_func = OpFunction %void None %29 %tint_discard_func = OpFunction %void None %29
%177 = OpLabel %174 = OpLabel
OpKill OpKill
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %main_out None %178 %main_inner = OpFunction %main_out None %175
%fClipDistance3_param = OpFunctionParameter %float %fClipDistance3_param = OpFunctionParameter %float
%fClipDistance4_param = OpFunctionParameter %float %fClipDistance4_param = OpFunctionParameter %float
%183 = OpLabel %180 = OpLabel
OpStore %fClipDistance3 %fClipDistance3_param OpStore %fClipDistance3 %fClipDistance3_param
OpStore %fClipDistance4 %fClipDistance4_param OpStore %fClipDistance4 %fClipDistance4_param
%184 = OpFunctionCall %void %main_1 %181 = OpFunctionCall %void %main_1
%185 = OpLoad %bool %tint_discard %182 = OpLoad %bool %tint_discard
OpSelectionMerge %186 None OpSelectionMerge %183 None
OpBranchConditional %185 %187 %186 OpBranchConditional %182 %184 %183
%187 = OpLabel %184 = OpLabel
%188 = OpFunctionCall %void %tint_discard_func %185 = OpFunctionCall %void %tint_discard_func
OpReturnValue %189 OpReturnValue %186
%186 = OpLabel %183 = OpLabel
%190 = OpLoad %v4float %glFragColor %187 = OpLoad %v4float %glFragColor
%191 = OpCompositeConstruct %main_out %190 %188 = OpCompositeConstruct %main_out %187
OpReturnValue %191 OpReturnValue %188
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %29 %main = OpFunction %void None %29
%193 = OpLabel %190 = OpLabel
%195 = OpLoad %float %fClipDistance3_param_1 %192 = OpLoad %float %fClipDistance3_param_1
%196 = OpLoad %float %fClipDistance4_param_1 %193 = OpLoad %float %fClipDistance4_param_1
%194 = OpFunctionCall %main_out %main_inner %195 %196 %191 = OpFunctionCall %main_out %main_inner %192 %193
%197 = OpCompositeExtract %v4float %194 0 %194 = OpCompositeExtract %v4float %191 0
OpStore %glFragColor_1_1 %197 OpStore %glFragColor_1_1 %194
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 417 ; Bound: 415
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%60 = OpExtInstImport "GLSL.std.450" %60 = OpExtInstImport "GLSL.std.450"
@ -157,31 +157,29 @@
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%117 = OpConstantNull %v4float %117 = OpConstantNull %v4float
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%float_0 = OpConstant %float 0
%uint_6 = OpConstant %uint 6 %uint_6 = OpConstant %uint 6
%_arr_v4float_uint_6 = OpTypeArray %v4float %uint_6 %_arr_v4float_uint_6 = OpTypeArray %v4float %uint_6
%_ptr_Function__arr_v4float_uint_6 = OpTypePointer Function %_arr_v4float_uint_6 %_ptr_Function__arr_v4float_uint_6 = OpTypePointer Function %_arr_v4float_uint_6
%156 = OpConstantNull %_arr_v4float_uint_6 %155 = OpConstantNull %_arr_v4float_uint_6
%int_4 = OpConstant %int 4 %int_4 = OpConstant %int 4
%int_5 = OpConstant %int 5 %int_5 = OpConstant %int 5
%int_16 = OpConstant %int 16 %int_16 = OpConstant %int 16
%int_0 = OpConstant %int 0 %166 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%170 = OpConstantNull %int
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%_ptr_Function_v2int = OpTypePointer Function %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int
%198 = OpConstantNull %v2int %196 = OpConstantNull %v2int
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%v2float = OpTypeVector %float 2 %v2float = OpTypeVector %float 2
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%209 = OpConstantComposite %v2float %float_1 %float_1 %207 = OpConstantComposite %v2float %float_1 %float_1
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%213 = OpConstantNull %v2float %211 = OpConstantNull %v2float
%216 = OpConstantComposite %v2int %int_16 %int_16 %214 = OpConstantComposite %v2int %int_16 %int_16
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
%412 = OpTypeFunction %void %410 = OpTypeFunction %void
%main_inner = OpFunction %void None %28 %main_inner = OpFunction %void None %28
%GlobalInvocationID = OpFunctionParameter %v3uint %GlobalInvocationID = OpFunctionParameter %v3uint
%32 = OpLabel %32 = OpLabel
@ -194,14 +192,14 @@
%lightRadius = OpVariable %_ptr_Function_float Function %101 %lightRadius = OpVariable %_ptr_Function_float Function %101
%boxMin = OpVariable %_ptr_Function_v4float Function %117 %boxMin = OpVariable %_ptr_Function_v4float Function %117
%boxMax = OpVariable %_ptr_Function_v4float Function %117 %boxMax = OpVariable %_ptr_Function_v4float Function %117
%frustumPlanes = OpVariable %_ptr_Function__arr_v4float_uint_6 Function %156 %frustumPlanes = OpVariable %_ptr_Function__arr_v4float_uint_6 Function %155
%y = OpVariable %_ptr_Function_int Function %170 %y = OpVariable %_ptr_Function_int Function %166
%x = OpVariable %_ptr_Function_int Function %170 %x = OpVariable %_ptr_Function_int Function %166
%tilePixel0Idx = OpVariable %_ptr_Function_v2int Function %198 %tilePixel0Idx = OpVariable %_ptr_Function_v2int Function %196
%floorCoord = OpVariable %_ptr_Function_v2float Function %213 %floorCoord = OpVariable %_ptr_Function_v2float Function %211
%ceilCoord = OpVariable %_ptr_Function_v2float Function %213 %ceilCoord = OpVariable %_ptr_Function_v2float Function %211
%viewFloorCoord = OpVariable %_ptr_Function_v2float Function %213 %viewFloorCoord = OpVariable %_ptr_Function_v2float Function %211
%viewCeilCoord = OpVariable %_ptr_Function_v2float Function %213 %viewCeilCoord = OpVariable %_ptr_Function_v2float Function %211
%dp = OpVariable %_ptr_Function_float Function %101 %dp = OpVariable %_ptr_Function_float Function %101
%i = OpVariable %_ptr_Function_uint Function %36 %i = OpVariable %_ptr_Function_uint Function %36
%p = OpVariable %_ptr_Function_v4float Function %117 %p = OpVariable %_ptr_Function_v4float Function %117
@ -295,323 +293,323 @@
%136 = OpCompositeExtract %float %135 0 %136 = OpCompositeExtract %float %135 0
%137 = OpCompositeExtract %float %135 1 %137 = OpCompositeExtract %float %135 1
%138 = OpCompositeExtract %float %135 2 %138 = OpCompositeExtract %float %135 2
%140 = OpCompositeConstruct %v4float %136 %137 %138 %float_0 %139 = OpCompositeConstruct %v4float %136 %137 %138 %101
%141 = OpFSub %v4float %133 %140 %140 = OpFSub %v4float %133 %139
OpStore %boxMin %141 OpStore %boxMin %140
%143 = OpLoad %v4float %lightPos %142 = OpLoad %v4float %lightPos
%144 = OpLoad %float %lightRadius %143 = OpLoad %float %lightRadius
%145 = OpCompositeConstruct %v3float %144 %144 %144 %144 = OpCompositeConstruct %v3float %143 %143 %143
%146 = OpCompositeExtract %float %145 0 %145 = OpCompositeExtract %float %144 0
%147 = OpCompositeExtract %float %145 1 %146 = OpCompositeExtract %float %144 1
%148 = OpCompositeExtract %float %145 2 %147 = OpCompositeExtract %float %144 2
%149 = OpCompositeConstruct %v4float %146 %147 %148 %float_0 %148 = OpCompositeConstruct %v4float %145 %146 %147 %101
%150 = OpFAdd %v4float %143 %149 %149 = OpFAdd %v4float %142 %148
OpStore %boxMax %150 OpStore %boxMax %149
%158 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_4 %157 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_4
%159 = OpLoad %float %viewNear %158 = OpLoad %float %viewNear
%160 = OpCompositeConstruct %v4float %float_0 %float_0 %float_n1 %159 %159 = OpCompositeConstruct %v4float %101 %101 %float_n1 %158
OpStore %158 %160 OpStore %157 %159
%162 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_5 %161 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_5
%164 = OpLoad %float %viewFar %163 = OpLoad %float %viewFar
%163 = OpFNegate %float %164 %162 = OpFNegate %float %163
%165 = OpCompositeConstruct %v4float %float_0 %float_0 %float_1 %163 %164 = OpCompositeConstruct %v4float %101 %101 %float_1 %162
OpStore %162 %165 OpStore %161 %164
OpStore %y %int_0 OpStore %y %166
OpBranch %171 OpBranch %169
%171 = OpLabel %169 = OpLabel
OpLoopMerge %172 %173 None OpLoopMerge %170 %171 None
OpBranch %174
%174 = OpLabel
%176 = OpLoad %int %y
%177 = OpSLessThan %bool %176 %int_2
%175 = OpLogicalNot %bool %177
OpSelectionMerge %178 None
OpBranchConditional %175 %179 %178
%179 = OpLabel
OpBranch %172 OpBranch %172
%178 = OpLabel %172 = OpLabel
OpStore %x %int_0 %174 = OpLoad %int %y
OpBranch %181 %175 = OpSLessThan %bool %174 %int_2
%181 = OpLabel %173 = OpLogicalNot %bool %175
OpLoopMerge %182 %183 None OpSelectionMerge %176 None
OpBranch %184 OpBranchConditional %173 %177 %176
%184 = OpLabel %177 = OpLabel
%186 = OpLoad %int %x OpBranch %170
%187 = OpSLessThan %bool %186 %int_2 %176 = OpLabel
%185 = OpLogicalNot %bool %187 OpStore %x %166
OpSelectionMerge %188 None OpBranch %179
OpBranchConditional %185 %189 %188 %179 = OpLabel
%189 = OpLabel OpLoopMerge %180 %181 None
OpBranch %182 OpBranch %182
%188 = OpLabel %182 = OpLabel
%191 = OpLoad %int %x %184 = OpLoad %int %x
%185 = OpSLessThan %bool %184 %int_2
%183 = OpLogicalNot %bool %185
OpSelectionMerge %186 None
OpBranchConditional %183 %187 %186
%187 = OpLabel
OpBranch %180
%186 = OpLabel
%189 = OpLoad %int %x
%190 = OpIMul %int %189 %int_16
%191 = OpLoad %int %y
%192 = OpIMul %int %191 %int_16 %192 = OpIMul %int %191 %int_16
%193 = OpLoad %int %y %193 = OpCompositeConstruct %v2int %190 %192
%194 = OpIMul %int %193 %int_16 OpStore %tilePixel0Idx %193
%195 = OpCompositeConstruct %v2int %192 %194 %200 = OpLoad %v2int %tilePixel0Idx
OpStore %tilePixel0Idx %195 %198 = OpConvertSToF %v2float %200
%202 = OpLoad %v2int %tilePixel0Idx %201 = OpVectorTimesScalar %v2float %198 %float_2
%200 = OpConvertSToF %v2float %202 %203 = OpAccessChain %_ptr_Uniform_v4float %uniforms %uint_4
%203 = OpVectorTimesScalar %v2float %200 %float_2 %204 = OpLoad %v4float %203
%205 = OpAccessChain %_ptr_Uniform_v4float %uniforms %uint_4 %205 = OpVectorShuffle %v2float %204 %204 0 1
%206 = OpLoad %v4float %205 %206 = OpFDiv %v2float %201 %205
%207 = OpVectorShuffle %v2float %206 %206 0 1 %208 = OpFSub %v2float %206 %207
%208 = OpFDiv %v2float %203 %207 OpStore %floorCoord %208
%210 = OpFSub %v2float %208 %209 %213 = OpLoad %v2int %tilePixel0Idx
OpStore %floorCoord %210 %215 = OpIAdd %v2int %213 %214
%215 = OpLoad %v2int %tilePixel0Idx %212 = OpConvertSToF %v2float %215
%217 = OpIAdd %v2int %215 %216 %216 = OpVectorTimesScalar %v2float %212 %float_2
%214 = OpConvertSToF %v2float %217 %217 = OpAccessChain %_ptr_Uniform_v4float %uniforms %uint_4
%218 = OpVectorTimesScalar %v2float %214 %float_2 %218 = OpLoad %v4float %217
%219 = OpAccessChain %_ptr_Uniform_v4float %uniforms %uint_4 %219 = OpVectorShuffle %v2float %218 %218 0 1
%220 = OpLoad %v4float %219 %220 = OpFDiv %v2float %216 %219
%221 = OpVectorShuffle %v2float %220 %220 0 1 %221 = OpFSub %v2float %220 %207
%222 = OpFDiv %v2float %218 %221 OpStore %ceilCoord %221
%223 = OpFSub %v2float %222 %209 %224 = OpLoad %float %viewNear
OpStore %ceilCoord %223 %223 = OpFNegate %float %224
%226 = OpLoad %float %viewNear %225 = OpAccessChain %_ptr_Function_float %floorCoord %uint_0
%225 = OpFNegate %float %226 %226 = OpLoad %float %225
%227 = OpAccessChain %_ptr_Function_float %floorCoord %uint_0 %227 = OpFMul %float %223 %226
%228 = OpLoad %float %227 %228 = OpAccessChain %_ptr_Function_float %M %int_2 %166
%229 = OpFMul %float %225 %228 %229 = OpLoad %float %228
%230 = OpAccessChain %_ptr_Function_float %M %int_2 %int_0 %230 = OpLoad %float %viewNear
%231 = OpLoad %float %230 %231 = OpFMul %float %229 %230
%232 = OpLoad %float %viewNear %232 = OpFSub %float %227 %231
%233 = OpFMul %float %231 %232 %233 = OpAccessChain %_ptr_Function_float %M %166 %166
%234 = OpFSub %float %229 %233 %234 = OpLoad %float %233
%235 = OpAccessChain %_ptr_Function_float %M %int_0 %int_0 %235 = OpFDiv %float %232 %234
%236 = OpLoad %float %235 %237 = OpLoad %float %viewNear
%237 = OpFDiv %float %234 %236 %236 = OpFNegate %float %237
%239 = OpLoad %float %viewNear %238 = OpAccessChain %_ptr_Function_float %floorCoord %uint_1
%238 = OpFNegate %float %239 %239 = OpLoad %float %238
%240 = OpAccessChain %_ptr_Function_float %floorCoord %uint_1 %240 = OpFMul %float %236 %239
%241 = OpLoad %float %240 %242 = OpAccessChain %_ptr_Function_float %M %int_2 %int_1
%242 = OpFMul %float %238 %241 %243 = OpLoad %float %242
%244 = OpAccessChain %_ptr_Function_float %M %int_2 %int_1 %244 = OpLoad %float %viewNear
%245 = OpLoad %float %244 %245 = OpFMul %float %243 %244
%246 = OpLoad %float %viewNear %246 = OpFSub %float %240 %245
%247 = OpFMul %float %245 %246 %247 = OpAccessChain %_ptr_Function_float %M %int_1 %int_1
%248 = OpFSub %float %242 %247 %248 = OpLoad %float %247
%249 = OpAccessChain %_ptr_Function_float %M %int_1 %int_1 %249 = OpFDiv %float %246 %248
%250 = OpLoad %float %249 %250 = OpCompositeConstruct %v2float %235 %249
%251 = OpFDiv %float %248 %250 OpStore %viewFloorCoord %250
%252 = OpCompositeConstruct %v2float %237 %251 %253 = OpLoad %float %viewNear
OpStore %viewFloorCoord %252 %252 = OpFNegate %float %253
%255 = OpLoad %float %viewNear %254 = OpAccessChain %_ptr_Function_float %ceilCoord %uint_0
%254 = OpFNegate %float %255 %255 = OpLoad %float %254
%256 = OpAccessChain %_ptr_Function_float %ceilCoord %uint_0 %256 = OpFMul %float %252 %255
%257 = OpLoad %float %256 %257 = OpAccessChain %_ptr_Function_float %M %int_2 %166
%258 = OpFMul %float %254 %257 %258 = OpLoad %float %257
%259 = OpAccessChain %_ptr_Function_float %M %int_2 %int_0 %259 = OpLoad %float %viewNear
%260 = OpLoad %float %259 %260 = OpFMul %float %258 %259
%261 = OpLoad %float %viewNear %261 = OpFSub %float %256 %260
%262 = OpFMul %float %260 %261 %262 = OpAccessChain %_ptr_Function_float %M %166 %166
%263 = OpFSub %float %258 %262 %263 = OpLoad %float %262
%264 = OpAccessChain %_ptr_Function_float %M %int_0 %int_0 %264 = OpFDiv %float %261 %263
%265 = OpLoad %float %264 %266 = OpLoad %float %viewNear
%266 = OpFDiv %float %263 %265 %265 = OpFNegate %float %266
%268 = OpLoad %float %viewNear %267 = OpAccessChain %_ptr_Function_float %ceilCoord %uint_1
%267 = OpFNegate %float %268 %268 = OpLoad %float %267
%269 = OpAccessChain %_ptr_Function_float %ceilCoord %uint_1 %269 = OpFMul %float %265 %268
%270 = OpLoad %float %269 %270 = OpAccessChain %_ptr_Function_float %M %int_2 %int_1
%271 = OpFMul %float %267 %270 %271 = OpLoad %float %270
%272 = OpAccessChain %_ptr_Function_float %M %int_2 %int_1 %272 = OpLoad %float %viewNear
%273 = OpLoad %float %272 %273 = OpFMul %float %271 %272
%274 = OpLoad %float %viewNear %274 = OpFSub %float %269 %273
%275 = OpFMul %float %273 %274 %275 = OpAccessChain %_ptr_Function_float %M %int_1 %int_1
%276 = OpFSub %float %271 %275 %276 = OpLoad %float %275
%277 = OpAccessChain %_ptr_Function_float %M %int_1 %int_1 %277 = OpFDiv %float %274 %276
%278 = OpLoad %float %277 %278 = OpCompositeConstruct %v2float %264 %277
%279 = OpFDiv %float %276 %278 OpStore %viewCeilCoord %278
%280 = OpCompositeConstruct %v2float %266 %279 %280 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %166
OpStore %viewCeilCoord %280 %282 = OpAccessChain %_ptr_Function_float %viewFloorCoord %uint_0
%282 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_0 %283 = OpLoad %float %282
%284 = OpAccessChain %_ptr_Function_float %viewFloorCoord %uint_0 %281 = OpFNegate %float %283
%285 = OpLoad %float %284 %284 = OpLoad %float %viewNear
%283 = OpFNegate %float %285 %285 = OpFDiv %float %281 %284
%286 = OpLoad %float %viewNear %286 = OpCompositeConstruct %v4float %float_1 %101 %285 %101
%287 = OpFDiv %float %283 %286 OpStore %280 %286
%288 = OpCompositeConstruct %v4float %float_1 %float_0 %287 %float_0 %287 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_1
OpStore %282 %288 %288 = OpAccessChain %_ptr_Function_float %viewCeilCoord %uint_0
%289 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_1 %289 = OpLoad %float %288
%290 = OpAccessChain %_ptr_Function_float %viewCeilCoord %uint_0 %290 = OpLoad %float %viewNear
%291 = OpLoad %float %290 %291 = OpFDiv %float %289 %290
%292 = OpLoad %float %viewNear %292 = OpCompositeConstruct %v4float %float_n1 %101 %291 %101
%293 = OpFDiv %float %291 %292 OpStore %287 %292
%294 = OpCompositeConstruct %v4float %float_n1 %float_0 %293 %float_0 %293 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_2
OpStore %289 %294 %295 = OpAccessChain %_ptr_Function_float %viewFloorCoord %uint_1
%295 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_2 %296 = OpLoad %float %295
%297 = OpAccessChain %_ptr_Function_float %viewFloorCoord %uint_1 %294 = OpFNegate %float %296
%298 = OpLoad %float %297 %297 = OpLoad %float %viewNear
%296 = OpFNegate %float %298 %298 = OpFDiv %float %294 %297
%299 = OpLoad %float %viewNear %299 = OpCompositeConstruct %v4float %101 %float_1 %298 %101
%300 = OpFDiv %float %296 %299 OpStore %293 %299
%301 = OpCompositeConstruct %v4float %float_0 %float_1 %300 %float_0 %300 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_3
OpStore %295 %301 %301 = OpAccessChain %_ptr_Function_float %viewCeilCoord %uint_1
%302 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %int_3 %302 = OpLoad %float %301
%303 = OpAccessChain %_ptr_Function_float %viewCeilCoord %uint_1 %303 = OpLoad %float %viewNear
%304 = OpLoad %float %303 %304 = OpFDiv %float %302 %303
%305 = OpLoad %float %viewNear %305 = OpCompositeConstruct %v4float %101 %float_n1 %304 %101
%306 = OpFDiv %float %304 %305 OpStore %300 %305
%307 = OpCompositeConstruct %v4float %float_0 %float_n1 %306 %float_0 OpStore %dp %101
OpStore %302 %307 OpStore %i %36
OpStore %dp %float_0 OpBranch %308
OpStore %i %uint_0 %308 = OpLabel
OpLoopMerge %309 %310 None
OpBranch %311
%311 = OpLabel
%313 = OpLoad %uint %i
%314 = OpULessThan %bool %313 %uint_6
%312 = OpLogicalNot %bool %314
OpSelectionMerge %315 None
OpBranchConditional %312 %316 %315
%316 = OpLabel
OpBranch %309
%315 = OpLabel
%318 = OpLoad %uint %i
%319 = OpAccessChain %_ptr_Function_float %frustumPlanes %318 %uint_0
%320 = OpLoad %float %319
%321 = OpFOrdGreaterThan %bool %320 %101
OpSelectionMerge %322 None
OpBranchConditional %321 %323 %324
%323 = OpLabel
%325 = OpAccessChain %_ptr_Function_float %p %uint_0
%326 = OpAccessChain %_ptr_Function_float %boxMax %uint_0
%327 = OpLoad %float %326
OpStore %325 %327
OpBranch %322
%324 = OpLabel
%328 = OpAccessChain %_ptr_Function_float %p %uint_0
%329 = OpAccessChain %_ptr_Function_float %boxMin %uint_0
%330 = OpLoad %float %329
OpStore %328 %330
OpBranch %322
%322 = OpLabel
%331 = OpLoad %uint %i
%332 = OpAccessChain %_ptr_Function_float %frustumPlanes %331 %uint_1
%333 = OpLoad %float %332
%334 = OpFOrdGreaterThan %bool %333 %101
OpSelectionMerge %335 None
OpBranchConditional %334 %336 %337
%336 = OpLabel
%338 = OpAccessChain %_ptr_Function_float %p %uint_1
%339 = OpAccessChain %_ptr_Function_float %boxMax %uint_1
%340 = OpLoad %float %339
OpStore %338 %340
OpBranch %335
%337 = OpLabel
%341 = OpAccessChain %_ptr_Function_float %p %uint_1
%342 = OpAccessChain %_ptr_Function_float %boxMin %uint_1
%343 = OpLoad %float %342
OpStore %341 %343
OpBranch %335
%335 = OpLabel
%344 = OpLoad %uint %i
%345 = OpAccessChain %_ptr_Function_float %frustumPlanes %344 %uint_2
%346 = OpLoad %float %345
%347 = OpFOrdGreaterThan %bool %346 %101
OpSelectionMerge %348 None
OpBranchConditional %347 %349 %350
%349 = OpLabel
%351 = OpAccessChain %_ptr_Function_float %p %uint_2
%352 = OpAccessChain %_ptr_Function_float %boxMax %uint_2
%353 = OpLoad %float %352
OpStore %351 %353
OpBranch %348
%350 = OpLabel
%354 = OpAccessChain %_ptr_Function_float %p %uint_2
%355 = OpAccessChain %_ptr_Function_float %boxMin %uint_2
%356 = OpLoad %float %355
OpStore %354 %356
OpBranch %348
%348 = OpLabel
%357 = OpAccessChain %_ptr_Function_float %p %uint_3
OpStore %357 %float_1
%358 = OpLoad %float %dp
%361 = OpLoad %v4float %p
%362 = OpLoad %uint %i
%363 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %362
%364 = OpLoad %v4float %363
%360 = OpDot %float %361 %364
%359 = OpExtInst %float %60 NMin %101 %360
%365 = OpFAdd %float %358 %359
OpStore %dp %365
OpBranch %310 OpBranch %310
%310 = OpLabel %310 = OpLabel
OpLoopMerge %311 %312 None %366 = OpLoad %uint %i
OpBranch %313 %367 = OpIAdd %uint %366 %uint_1
%313 = OpLabel OpStore %i %367
%315 = OpLoad %uint %i OpBranch %308
%316 = OpULessThan %bool %315 %uint_6 %309 = OpLabel
%314 = OpLogicalNot %bool %316 %368 = OpLoad %float %dp
OpSelectionMerge %317 None %369 = OpFOrdGreaterThanEqual %bool %368 %101
OpBranchConditional %314 %318 %317 OpSelectionMerge %370 None
%318 = OpLabel OpBranchConditional %369 %371 %370
OpBranch %311 %371 = OpLabel
%317 = OpLabel %373 = OpLoad %int %x
%320 = OpLoad %uint %i %374 = OpLoad %int %y
%321 = OpAccessChain %_ptr_Function_float %frustumPlanes %320 %uint_0 %375 = OpIMul %int %374 %int_2
%322 = OpLoad %float %321 %376 = OpIAdd %int %373 %375
%323 = OpFOrdGreaterThan %bool %322 %float_0 %372 = OpBitcast %uint %376
OpSelectionMerge %324 None OpStore %tileId %372
OpBranchConditional %323 %325 %326 %378 = OpLoad %uint %tileId
%325 = OpLabel %379 = OpULessThan %bool %378 %36
%327 = OpAccessChain %_ptr_Function_float %p %uint_0 OpSelectionMerge %380 None
%328 = OpAccessChain %_ptr_Function_float %boxMax %uint_0 OpBranchConditional %379 %380 %381
%329 = OpLoad %float %328 %381 = OpLabel
OpStore %327 %329 %382 = OpLoad %uint %tileId
OpBranch %324 %383 = OpAccessChain %_ptr_Uniform_uint %config %uint_1
%326 = OpLabel %384 = OpLoad %uint %383
%330 = OpAccessChain %_ptr_Function_float %p %uint_0 %385 = OpUGreaterThanEqual %bool %382 %384
%331 = OpAccessChain %_ptr_Function_float %boxMin %uint_0 OpBranch %380
%332 = OpLoad %float %331 %380 = OpLabel
OpStore %330 %332 %386 = OpPhi %bool %379 %371 %385 %381
OpBranch %324 OpSelectionMerge %387 None
%324 = OpLabel OpBranchConditional %386 %388 %387
%333 = OpLoad %uint %i %388 = OpLabel
%334 = OpAccessChain %_ptr_Function_float %frustumPlanes %333 %uint_1
%335 = OpLoad %float %334
%336 = OpFOrdGreaterThan %bool %335 %float_0
OpSelectionMerge %337 None
OpBranchConditional %336 %338 %339
%338 = OpLabel
%340 = OpAccessChain %_ptr_Function_float %p %uint_1
%341 = OpAccessChain %_ptr_Function_float %boxMax %uint_1
%342 = OpLoad %float %341
OpStore %340 %342
OpBranch %337
%339 = OpLabel
%343 = OpAccessChain %_ptr_Function_float %p %uint_1
%344 = OpAccessChain %_ptr_Function_float %boxMin %uint_1
%345 = OpLoad %float %344
OpStore %343 %345
OpBranch %337
%337 = OpLabel
%346 = OpLoad %uint %i
%347 = OpAccessChain %_ptr_Function_float %frustumPlanes %346 %uint_2
%348 = OpLoad %float %347
%349 = OpFOrdGreaterThan %bool %348 %float_0
OpSelectionMerge %350 None
OpBranchConditional %349 %351 %352
%351 = OpLabel
%353 = OpAccessChain %_ptr_Function_float %p %uint_2
%354 = OpAccessChain %_ptr_Function_float %boxMax %uint_2
%355 = OpLoad %float %354
OpStore %353 %355
OpBranch %350
%352 = OpLabel
%356 = OpAccessChain %_ptr_Function_float %p %uint_2
%357 = OpAccessChain %_ptr_Function_float %boxMin %uint_2
%358 = OpLoad %float %357
OpStore %356 %358
OpBranch %350
%350 = OpLabel
%359 = OpAccessChain %_ptr_Function_float %p %uint_3
OpStore %359 %float_1
%360 = OpLoad %float %dp
%363 = OpLoad %v4float %p
%364 = OpLoad %uint %i
%365 = OpAccessChain %_ptr_Function_v4float %frustumPlanes %364
%366 = OpLoad %v4float %365
%362 = OpDot %float %363 %366
%361 = OpExtInst %float %60 NMin %float_0 %362
%367 = OpFAdd %float %360 %361
OpStore %dp %367
OpBranch %312
%312 = OpLabel
%368 = OpLoad %uint %i
%369 = OpIAdd %uint %368 %uint_1
OpStore %i %369
OpBranch %310
%311 = OpLabel
%370 = OpLoad %float %dp
%371 = OpFOrdGreaterThanEqual %bool %370 %float_0
OpSelectionMerge %372 None
OpBranchConditional %371 %373 %372
%373 = OpLabel
%375 = OpLoad %int %x
%376 = OpLoad %int %y
%377 = OpIMul %int %376 %int_2
%378 = OpIAdd %int %375 %377
%374 = OpBitcast %uint %378
OpStore %tileId %374
%380 = OpLoad %uint %tileId
%381 = OpULessThan %bool %380 %uint_0
OpSelectionMerge %382 None
OpBranchConditional %381 %382 %383
%383 = OpLabel
%384 = OpLoad %uint %tileId
%385 = OpAccessChain %_ptr_Uniform_uint %config %uint_1
%386 = OpLoad %uint %385
%387 = OpUGreaterThanEqual %bool %384 %386
OpBranch %382
%382 = OpLabel
%388 = OpPhi %bool %381 %373 %387 %383
OpSelectionMerge %389 None
OpBranchConditional %388 %390 %389
%390 = OpLabel
OpBranch %183
%389 = OpLabel
%393 = OpLoad %uint %tileId
%395 = OpAccessChain %_ptr_StorageBuffer_uint %tileLightId %uint_0 %393 %uint_0
%391 = OpAtomicIAdd %uint %395 %uint_1 %uint_0 %uint_1
OpStore %offset %391
%397 = OpLoad %uint %offset
%398 = OpAccessChain %_ptr_Uniform_uint %config %uint_4
%399 = OpLoad %uint %398
%400 = OpUGreaterThanEqual %bool %397 %399
OpSelectionMerge %401 None
OpBranchConditional %400 %402 %401
%402 = OpLabel
OpBranch %183
%401 = OpLabel
%403 = OpLoad %uint %tileId
%404 = OpLoad %uint %offset
%406 = OpAccessChain %_ptr_StorageBuffer_uint_0 %tileLightId %uint_0 %403 %uint_1 %404
%407 = OpCompositeExtract %uint %GlobalInvocationID 0
OpStore %406 %407
OpBranch %372
%372 = OpLabel
OpBranch %183
%183 = OpLabel
%408 = OpLoad %int %x
%409 = OpIAdd %int %408 %int_1
OpStore %x %409
OpBranch %181 OpBranch %181
%182 = OpLabel %387 = OpLabel
OpBranch %173 %391 = OpLoad %uint %tileId
%173 = OpLabel %393 = OpAccessChain %_ptr_StorageBuffer_uint %tileLightId %uint_0 %391 %uint_0
%410 = OpLoad %int %y %389 = OpAtomicIAdd %uint %393 %uint_1 %uint_0 %uint_1
%411 = OpIAdd %int %410 %int_1 OpStore %offset %389
OpStore %y %411 %395 = OpLoad %uint %offset
%396 = OpAccessChain %_ptr_Uniform_uint %config %uint_4
%397 = OpLoad %uint %396
%398 = OpUGreaterThanEqual %bool %395 %397
OpSelectionMerge %399 None
OpBranchConditional %398 %400 %399
%400 = OpLabel
OpBranch %181
%399 = OpLabel
%401 = OpLoad %uint %tileId
%402 = OpLoad %uint %offset
%404 = OpAccessChain %_ptr_StorageBuffer_uint_0 %tileLightId %uint_0 %401 %uint_1 %402
%405 = OpCompositeExtract %uint %GlobalInvocationID 0
OpStore %404 %405
OpBranch %370
%370 = OpLabel
OpBranch %181
%181 = OpLabel
%406 = OpLoad %int %x
%407 = OpIAdd %int %406 %int_1
OpStore %x %407
OpBranch %179
%180 = OpLabel
OpBranch %171 OpBranch %171
%172 = OpLabel %171 = OpLabel
%408 = OpLoad %int %y
%409 = OpIAdd %int %408 %int_1
OpStore %y %409
OpBranch %169
%170 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %412 %main = OpFunction %void None %410
%414 = OpLabel %412 = OpLabel
%416 = OpLoad %v3uint %GlobalInvocationID_1 %414 = OpLoad %v3uint %GlobalInvocationID_1
%415 = OpFunctionCall %void %main_inner %416 %413 = OpFunctionCall %void %main_inner %414
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -9,7 +9,7 @@ bug/tint/1369.wgsl:9:9 warning: code is unreachable
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 23 ; Bound: 22
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -21,35 +21,34 @@ bug/tint/1369.wgsl:9:9 warning: code is unreachable
OpName %f "f" OpName %f "f"
OpName %v "v" OpName %v "v"
%bool = OpTypeBool %bool = OpTypeBool
%false = OpConstantFalse %bool %2 = OpConstantNull %bool
%_ptr_Private_bool = OpTypePointer Private %bool %_ptr_Private_bool = OpTypePointer Private %bool
%tint_discard = OpVariable %_ptr_Private_bool Private %false %tint_discard = OpVariable %_ptr_Private_bool Private %2
%5 = OpTypeFunction %bool %5 = OpTypeFunction %bool
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%9 = OpConstantNull %bool
%void = OpTypeVoid %void = OpTypeVoid
%10 = OpTypeFunction %void %9 = OpTypeFunction %void
%_ptr_Function_bool = OpTypePointer Function %bool %_ptr_Function_bool = OpTypePointer Function %bool
%call_discard = OpFunction %bool None %5 %call_discard = OpFunction %bool None %5
%7 = OpLabel %7 = OpLabel
OpStore %tint_discard %true OpStore %tint_discard %true
OpReturnValue %9 OpReturnValue %2
OpFunctionEnd OpFunctionEnd
%tint_discard_func = OpFunction %void None %10 %tint_discard_func = OpFunction %void None %9
%13 = OpLabel %12 = OpLabel
OpKill OpKill
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %10 %f = OpFunction %void None %9
%15 = OpLabel %14 = OpLabel
%v = OpVariable %_ptr_Function_bool Function %9 %v = OpVariable %_ptr_Function_bool Function %2
%16 = OpFunctionCall %bool %call_discard %15 = OpFunctionCall %bool %call_discard
OpStore %v %16 OpStore %v %15
%19 = OpLoad %bool %tint_discard %18 = OpLoad %bool %tint_discard
OpSelectionMerge %20 None OpSelectionMerge %19 None
OpBranchConditional %19 %21 %20 OpBranchConditional %18 %20 %19
%21 = OpLabel
%22 = OpFunctionCall %void %tint_discard_func
OpReturn
%20 = OpLabel %20 = OpLabel
%21 = OpFunctionCall %void %tint_discard_func
OpReturn
%19 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -26,13 +26,13 @@
%6 = OpTypeFunction %int %6 = OpTypeFunction %int
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%int_0 = OpConstant %int 0 %11 = OpConstantNull %int
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%void = OpTypeVoid %void = OpTypeVoid
%15 = OpTypeFunction %void %15 = OpTypeFunction %void
%foo = OpFunction %int None %6 %foo = OpFunction %int None %6
%8 = OpLabel %8 = OpLabel
%13 = OpAccessChain %_ptr_StorageBuffer_int %data %uint_0 %int_0 %13 = OpAccessChain %_ptr_StorageBuffer_int %data %uint_0 %11
%14 = OpLoad %int %13 %14 = OpLoad %int %13
OpReturnValue %14 OpReturnValue %14
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 175 ; Bound: 170
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -97,30 +97,25 @@
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%false = OpConstantFalse %bool
%int_0 = OpConstant %int 0
%53 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%62 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 %59 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%74 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 %71 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2
%void = OpTypeVoid %void = OpTypeVoid
%85 = OpTypeFunction %void %82 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%94 = OpConstantNull %float %91 = OpConstantNull %float
%float_0 = OpConstant %float 0
%113 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%121 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %116 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%133 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 %128 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%main_out = OpTypeStruct %v4float %main_out = OpTypeStruct %v4float
%160 = OpTypeFunction %main_out %bool %v4float %155 = OpTypeFunction %main_out %bool %v4float
%test_int_S1_c0_b = OpFunction %bool None %22 %test_int_S1_c0_b = OpFunction %bool None %22
%24 = OpLabel %24 = OpLabel
%unknown = OpVariable %_ptr_Function_int Function %28 %unknown = OpVariable %_ptr_Function_int Function %28
@ -137,72 +132,72 @@
%46 = OpConvertFToS %int %45 %46 = OpConvertFToS %int %45
OpStore %unknown %46 OpStore %unknown %46
OpStore %ok %true OpStore %ok %true
OpStore %x_41_phi %false OpStore %x_41_phi %20
OpSelectionMerge %49 None OpSelectionMerge %48 None
OpBranchConditional %true %50 %49 OpBranchConditional %true %49 %48
%50 = OpLabel
%54 = OpCompositeConstruct %v4int %46 %46 %46 %46
%55 = OpSDiv %v4int %53 %54
%56 = OpIEqual %v4bool %55 %53
%51 = OpAll %bool %56
OpStore %x_40 %51
%58 = OpLoad %bool %x_40
OpStore %x_41_phi %58
OpBranch %49
%49 = OpLabel %49 = OpLabel
%59 = OpLoad %bool %x_41_phi %51 = OpCompositeConstruct %v4int %46 %46 %46 %46
OpStore %ok %59 %52 = OpSDiv %v4int %34 %51
%60 = OpCompositeConstruct %v4int %46 %46 %46 %46 %53 = OpIEqual %v4bool %52 %34
%50 = OpAll %bool %53
OpStore %x_40 %50
%55 = OpLoad %bool %x_40
OpStore %x_41_phi %55
OpBranch %48
%48 = OpLabel
%56 = OpLoad %bool %x_41_phi
OpStore %ok %56
%57 = OpCompositeConstruct %v4int %46 %46 %46 %46
OpStore %val %57
%60 = OpIAdd %v4int %57 %59
OpStore %val %60 OpStore %val %60
%63 = OpIAdd %v4int %60 %62 %61 = OpISub %v4int %60 %59
OpStore %val %61
%62 = OpIAdd %v4int %61 %59
OpStore %val %62
%63 = OpISub %v4int %62 %59
OpStore %val %63 OpStore %val %63
%64 = OpISub %v4int %63 %62 OpStore %x_55_phi %20
OpStore %val %64 OpSelectionMerge %64 None
%65 = OpIAdd %v4int %64 %62 OpBranchConditional %56 %65 %64
OpStore %val %65 %65 = OpLabel
%66 = OpISub %v4int %65 %62 %67 = OpIEqual %v4bool %63 %57
OpStore %val %66 %66 = OpAll %bool %67
OpStore %x_55_phi %false OpStore %x_54 %66
OpSelectionMerge %67 None %68 = OpLoad %bool %x_54
OpBranchConditional %59 %68 %67 OpStore %x_55_phi %68
%68 = OpLabel OpBranch %64
%70 = OpIEqual %v4bool %66 %60 %64 = OpLabel
%69 = OpAll %bool %70 %69 = OpLoad %bool %x_55_phi
OpStore %x_54 %69 OpStore %ok %69
%71 = OpLoad %bool %x_54 %72 = OpIMul %v4int %63 %71
OpStore %x_55_phi %71 OpStore %val %72
OpBranch %67 %73 = OpSDiv %v4int %72 %71
%67 = OpLabel OpStore %val %73
%72 = OpLoad %bool %x_55_phi %74 = OpIMul %v4int %73 %71
OpStore %ok %72 OpStore %val %74
%75 = OpIMul %v4int %66 %74 %75 = OpSDiv %v4int %74 %71
OpStore %val %75 OpStore %val %75
%76 = OpSDiv %v4int %75 %74 OpStore %x_66_phi %20
OpStore %val %76 OpSelectionMerge %76 None
%77 = OpIMul %v4int %76 %74 OpBranchConditional %69 %77 %76
OpStore %val %77 %77 = OpLabel
%78 = OpSDiv %v4int %77 %74 %79 = OpIEqual %v4bool %75 %57
OpStore %val %78 %78 = OpAll %bool %79
OpStore %x_66_phi %false OpStore %x_65 %78
OpSelectionMerge %79 None %80 = OpLoad %bool %x_65
OpBranchConditional %72 %80 %79 OpStore %x_66_phi %80
%80 = OpLabel OpBranch %76
%82 = OpIEqual %v4bool %78 %60 %76 = OpLabel
%81 = OpAll %bool %82 %81 = OpLoad %bool %x_66_phi
OpStore %x_65 %81 OpStore %ok %81
%83 = OpLoad %bool %x_65 OpReturnValue %81
OpStore %x_66_phi %83
OpBranch %79
%79 = OpLabel
%84 = OpLoad %bool %x_66_phi
OpStore %ok %84
OpReturnValue %84
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %85 %main_1 = OpFunction %void None %82
%88 = OpLabel %85 = OpLabel
%outputColor_S0 = OpVariable %_ptr_Function_v4float Function %10 %outputColor_S0 = OpVariable %_ptr_Function_v4float Function %10
%output_S1 = OpVariable %_ptr_Function_v4float Function %10 %output_S1 = OpVariable %_ptr_Function_v4float Function %10
%x_8_unknown = OpVariable %_ptr_Function_float Function %94 %x_8_unknown = OpVariable %_ptr_Function_float Function %91
%x_9_ok = OpVariable %_ptr_Function_bool Function %20 %x_9_ok = OpVariable %_ptr_Function_bool Function %20
%x_10_val = OpVariable %_ptr_Function_v4float Function %10 %x_10_val = OpVariable %_ptr_Function_v4float Function %10
%x_116 = OpVariable %_ptr_Function_v4float Function %10 %x_116 = OpVariable %_ptr_Function_v4float Function %10
@ -214,117 +209,117 @@
%x_100_phi = OpVariable %_ptr_Function_bool Function %20 %x_100_phi = OpVariable %_ptr_Function_bool Function %20
%x_111_phi = OpVariable %_ptr_Function_bool Function %20 %x_111_phi = OpVariable %_ptr_Function_bool Function %20
%x_115_phi = OpVariable %_ptr_Function_bool Function %20 %x_115_phi = OpVariable %_ptr_Function_bool Function %20
%106 = OpLoad %v4float %vcolor_S0 %103 = OpLoad %v4float %vcolor_S0
OpStore %outputColor_S0 %106 OpStore %outputColor_S0 %103
%107 = OpAccessChain %_ptr_Uniform_float %x_4 %uint_0 %104 = OpAccessChain %_ptr_Uniform_float %x_4 %uint_0
%108 = OpLoad %float %107 %105 = OpLoad %float %104
OpStore %x_8_unknown %108 OpStore %x_8_unknown %105
OpStore %x_9_ok %true OpStore %x_9_ok %true
OpStore %x_87_phi %false OpStore %x_87_phi %20
OpSelectionMerge %109 None OpSelectionMerge %106 None
OpBranchConditional %true %110 %109 OpBranchConditional %true %107 %106
%110 = OpLabel %107 = OpLabel
%114 = OpCompositeConstruct %v4float %108 %108 %108 %108 %109 = OpCompositeConstruct %v4float %105 %105 %105 %105
%115 = OpFDiv %v4float %113 %114 %110 = OpFDiv %v4float %10 %109
%116 = OpFOrdEqual %v4bool %115 %113 %111 = OpFOrdEqual %v4bool %110 %10
%111 = OpAll %bool %116 %108 = OpAll %bool %111
OpStore %x_86 %111 OpStore %x_86 %108
%117 = OpLoad %bool %x_86 %112 = OpLoad %bool %x_86
OpStore %x_87_phi %117 OpStore %x_87_phi %112
OpBranch %109 OpBranch %106
%109 = OpLabel %106 = OpLabel
%118 = OpLoad %bool %x_87_phi %113 = OpLoad %bool %x_87_phi
OpStore %x_9_ok %118 OpStore %x_9_ok %113
%119 = OpCompositeConstruct %v4float %108 %108 %108 %108 %114 = OpCompositeConstruct %v4float %105 %105 %105 %105
OpStore %x_10_val %114
%117 = OpFAdd %v4float %114 %116
OpStore %x_10_val %117
%118 = OpFSub %v4float %117 %116
OpStore %x_10_val %118
%119 = OpFAdd %v4float %118 %116
OpStore %x_10_val %119 OpStore %x_10_val %119
%122 = OpFAdd %v4float %119 %121 %120 = OpFSub %v4float %119 %116
OpStore %x_10_val %122 OpStore %x_10_val %120
%123 = OpFSub %v4float %122 %121 OpStore %x_100_phi %20
OpStore %x_10_val %123 OpSelectionMerge %121 None
%124 = OpFAdd %v4float %123 %121 OpBranchConditional %113 %122 %121
OpStore %x_10_val %124 %122 = OpLabel
%125 = OpFSub %v4float %124 %121 %124 = OpFOrdEqual %v4bool %120 %114
OpStore %x_10_val %125 %123 = OpAll %bool %124
OpStore %x_100_phi %false OpStore %x_99 %123
OpSelectionMerge %126 None %125 = OpLoad %bool %x_99
OpBranchConditional %118 %127 %126 OpStore %x_100_phi %125
%127 = OpLabel OpBranch %121
%129 = OpFOrdEqual %v4bool %125 %119 %121 = OpLabel
%128 = OpAll %bool %129 %126 = OpLoad %bool %x_100_phi
OpStore %x_99 %128 OpStore %x_9_ok %126
%130 = OpLoad %bool %x_99 %129 = OpFMul %v4float %120 %128
OpStore %x_100_phi %130 OpStore %x_10_val %129
OpBranch %126 %130 = OpFDiv %v4float %129 %128
%126 = OpLabel OpStore %x_10_val %130
%131 = OpLoad %bool %x_100_phi %131 = OpFMul %v4float %130 %128
OpStore %x_9_ok %131 OpStore %x_10_val %131
%134 = OpFMul %v4float %125 %133 %132 = OpFDiv %v4float %131 %128
OpStore %x_10_val %134 OpStore %x_10_val %132
%135 = OpFDiv %v4float %134 %133 OpStore %x_111_phi %20
OpStore %x_10_val %135 OpSelectionMerge %133 None
%136 = OpFMul %v4float %135 %133 OpBranchConditional %126 %134 %133
OpStore %x_10_val %136 %134 = OpLabel
%137 = OpFDiv %v4float %136 %133 %136 = OpFOrdEqual %v4bool %132 %114
OpStore %x_10_val %137 %135 = OpAll %bool %136
OpStore %x_111_phi %false OpStore %x_110 %135
OpSelectionMerge %138 None %137 = OpLoad %bool %x_110
OpBranchConditional %131 %139 %138 OpStore %x_111_phi %137
OpBranch %133
%133 = OpLabel
%138 = OpLoad %bool %x_111_phi
OpStore %x_9_ok %138
OpStore %x_115_phi %20
OpSelectionMerge %139 None
OpBranchConditional %138 %140 %139
%140 = OpLabel
%141 = OpFunctionCall %bool %test_int_S1_c0_b
OpStore %x_114 %141
%142 = OpLoad %bool %x_114
OpStore %x_115_phi %142
OpBranch %139
%139 = OpLabel %139 = OpLabel
%141 = OpFOrdEqual %v4bool %137 %119 %143 = OpLoad %bool %x_115_phi
%140 = OpAll %bool %141
OpStore %x_110 %140
%142 = OpLoad %bool %x_110
OpStore %x_111_phi %142
OpBranch %138
%138 = OpLabel
%143 = OpLoad %bool %x_111_phi
OpStore %x_9_ok %143
OpStore %x_115_phi %false
OpSelectionMerge %144 None OpSelectionMerge %144 None
OpBranchConditional %143 %145 %144 OpBranchConditional %143 %145 %146
%145 = OpLabel %145 = OpLabel
%146 = OpFunctionCall %bool %test_int_S1_c0_b %149 = OpAccessChain %_ptr_Uniform_v4float %x_4 %uint_2
OpStore %x_114 %146 %150 = OpLoad %v4float %149
%147 = OpLoad %bool %x_114 OpStore %x_116 %150
OpStore %x_115_phi %147 OpBranch %144
%146 = OpLabel
%152 = OpAccessChain %_ptr_Uniform_v4float %x_4 %uint_1
%153 = OpLoad %v4float %152
OpStore %x_116 %153
OpBranch %144 OpBranch %144
%144 = OpLabel %144 = OpLabel
%148 = OpLoad %bool %x_115_phi %154 = OpLoad %v4float %x_116
OpSelectionMerge %149 None OpStore %output_S1 %154
OpBranchConditional %148 %150 %151 OpStore %sk_FragColor %154
%150 = OpLabel
%154 = OpAccessChain %_ptr_Uniform_v4float %x_4 %uint_2
%155 = OpLoad %v4float %154
OpStore %x_116 %155
OpBranch %149
%151 = OpLabel
%157 = OpAccessChain %_ptr_Uniform_v4float %x_4 %uint_1
%158 = OpLoad %v4float %157
OpStore %x_116 %158
OpBranch %149
%149 = OpLabel
%159 = OpLoad %v4float %x_116
OpStore %output_S1 %159
OpStore %sk_FragColor %159
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %main_out None %160 %main_inner = OpFunction %main_out None %155
%sk_Clockwise_param = OpFunctionParameter %bool %sk_Clockwise_param = OpFunctionParameter %bool
%vcolor_S0_param = OpFunctionParameter %v4float %vcolor_S0_param = OpFunctionParameter %v4float
%165 = OpLabel %160 = OpLabel
OpStore %sk_Clockwise %sk_Clockwise_param OpStore %sk_Clockwise %sk_Clockwise_param
OpStore %vcolor_S0 %vcolor_S0_param OpStore %vcolor_S0 %vcolor_S0_param
%166 = OpFunctionCall %void %main_1 %161 = OpFunctionCall %void %main_1
%167 = OpLoad %v4float %sk_FragColor %162 = OpLoad %v4float %sk_FragColor
%168 = OpCompositeConstruct %main_out %167 %163 = OpCompositeConstruct %main_out %162
OpReturnValue %168 OpReturnValue %163
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %85 %main = OpFunction %void None %82
%170 = OpLabel %165 = OpLabel
%172 = OpLoad %bool %sk_Clockwise_param_1 %167 = OpLoad %bool %sk_Clockwise_param_1
%173 = OpLoad %v4float %vcolor_S0_param_1 %168 = OpLoad %v4float %vcolor_S0_param_1
%171 = OpFunctionCall %main_out %main_inner %172 %173 %166 = OpFunctionCall %main_out %main_inner %167 %168
%174 = OpCompositeExtract %v4float %171 0 %169 = OpCompositeExtract %v4float %166 0
OpStore %sk_FragColor_1_1 %174 OpStore %sk_FragColor_1_1 %169
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 13 ; Bound: 12
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -12,15 +12,14 @@
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%bool = OpTypeBool %bool = OpTypeBool
%false = OpConstantFalse %bool %7 = OpConstantNull %bool
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%_ptr_Function_bool = OpTypePointer Function %bool %_ptr_Function_bool = OpTypePointer Function %bool
%12 = OpConstantNull %bool
%main = OpFunction %void None %1 %main = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
%v = OpVariable %_ptr_Function_bool Function %12 %v = OpVariable %_ptr_Function_bool Function %7
%9 = OpLogicalAnd %bool %true %true %9 = OpLogicalAnd %bool %true %true
%5 = OpSelect %bool %false %true %9 %5 = OpSelect %bool %7 %true %9
OpStore %v %5 OpStore %v %5
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -41,7 +41,7 @@
OpStore %value %uint_42 OpStore %value %uint_42
%20 = OpAccessChain %_ptr_StorageBuffer_uint %a %uint_0 %20 = OpAccessChain %_ptr_StorageBuffer_uint %a %uint_0
%21 = OpLoad %uint %value %21 = OpLoad %uint %value
%22 = OpAtomicCompareExchange %uint %20 %uint_1 %uint_0 %uint_0 %21 %uint_0 %22 = OpAtomicCompareExchange %uint %20 %uint_1 %uint_0 %uint_0 %21 %12
%23 = OpIEqual %bool %22 %21 %23 = OpIEqual %bool %22 %21
%13 = OpCompositeConstruct %__atomic_compare_exchange_resultu32 %22 %23 %13 = OpCompositeConstruct %__atomic_compare_exchange_resultu32 %22 %23
OpReturn OpReturn

View File

@ -27,44 +27,44 @@
%b = OpVariable %_ptr_StorageBuffer_Buf StorageBuffer %b = OpVariable %_ptr_StorageBuffer_Buf StorageBuffer
%void = OpTypeVoid %void = OpTypeVoid
%7 = OpTypeFunction %void %7 = OpTypeFunction %void
%uint_0 = OpConstant %uint 0 %11 = OpConstantNull %uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%14 = OpConstantNull %uint %uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%bool = OpTypeBool %bool = OpTypeBool
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%main = OpFunction %void None %7 %main = OpFunction %void None %7
%10 = OpLabel %10 = OpLabel
%i = OpVariable %_ptr_Function_uint Function %14 %i = OpVariable %_ptr_Function_uint Function %11
OpStore %i %uint_0 OpStore %i %11
OpBranch %15 OpBranch %14
%15 = OpLabel %14 = OpLabel
OpLoopMerge %16 %17 None OpLoopMerge %15 %16 None
OpBranch %18 OpBranch %17
%18 = OpLabel %17 = OpLabel
%19 = OpLoad %uint %i %18 = OpLoad %uint %i
%21 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_0 %21 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_0
%22 = OpLoad %uint %21 %22 = OpLoad %uint %21
%23 = OpUGreaterThanEqual %bool %19 %22 %23 = OpUGreaterThanEqual %bool %18 %22
OpSelectionMerge %25 None OpSelectionMerge %25 None
OpBranchConditional %23 %26 %25 OpBranchConditional %23 %26 %25
%26 = OpLabel %26 = OpLabel
OpBranch %16 OpBranch %15
%25 = OpLabel %25 = OpLabel
%27 = OpLoad %uint %i %27 = OpLoad %uint %i
%28 = OpLoad %uint %i %28 = OpLoad %uint %i
%30 = OpUMod %uint %28 %uint_2 %30 = OpUMod %uint %28 %uint_2
%31 = OpIEqual %bool %30 %uint_0 %31 = OpIEqual %bool %30 %11
OpSelectionMerge %32 None OpSelectionMerge %32 None
OpBranchConditional %31 %33 %32 OpBranchConditional %31 %33 %32
%33 = OpLabel %33 = OpLabel
OpBranch %17 OpBranch %16
%32 = OpLabel %32 = OpLabel
%35 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_1 %27 %35 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_1 %27
OpStore %35 %uint_0 OpStore %35 %11
OpBranch %17 OpBranch %16
%17 = OpLabel %16 = OpLabel
%36 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_1 %27 %36 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_1 %27
%37 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_1 %27 %37 = OpAccessChain %_ptr_StorageBuffer_uint %b %uint_1 %27
%38 = OpLoad %uint %37 %38 = OpLoad %uint %37
@ -73,7 +73,7 @@
%40 = OpLoad %uint %i %40 = OpLoad %uint %i
%41 = OpIAdd %uint %40 %uint_1 %41 = OpIAdd %uint %40 %uint_1
OpStore %i %41 OpStore %i %41
OpBranch %15 OpBranch %14
%16 = OpLabel %15 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -70,8 +70,8 @@
%39 = OpConstantComposite %v2float %float_n1 %float_n1 %39 = OpConstantComposite %v2float %float_n1 %float_n1
%40 = OpConstantComposite %_arr_v2float_uint_3 %37 %38 %39 %40 = OpConstantComposite %_arr_v2float_uint_3 %37 %38 %39
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%44 = OpConstantNull %uint
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%float_0 = OpConstant %float 0
%void = OpTypeVoid %void = OpTypeVoid
%57 = OpTypeFunction %void %57 = OpTypeFunction %void
%main_inner = OpFunction %v4float None %20 %main_inner = OpFunction %v4float None %20
@ -85,17 +85,17 @@
OpStore %indexable %40 OpStore %indexable %40
%42 = OpAccessChain %_ptr_Function_v2float %indexable %gl_VertexIndex %42 = OpAccessChain %_ptr_Function_v2float %indexable %gl_VertexIndex
%43 = OpLoad %v2float %42 %43 = OpLoad %v2float %42
%44 = OpCompositeExtract %v2float %32 0 %45 = OpCompositeExtract %v2float %32 0
%45 = OpCompositeExtract %v2float %34 0 %46 = OpCompositeExtract %v2float %34 0
%46 = OpFAdd %v2float %44 %45 %47 = OpFAdd %v2float %45 %46
%48 = OpCompositeExtract %v2float %32 1 %49 = OpCompositeExtract %v2float %32 1
%49 = OpCompositeExtract %v2float %34 1 %50 = OpCompositeExtract %v2float %34 1
%50 = OpFAdd %v2float %48 %49 %51 = OpFAdd %v2float %49 %50
%51 = OpCompositeConstruct %mat2v2float %46 %50 %52 = OpCompositeConstruct %mat2v2float %47 %51
%52 = OpMatrixTimesVector %v2float %51 %43 %53 = OpMatrixTimesVector %v2float %52 %43
%53 = OpCompositeExtract %float %52 0 %54 = OpCompositeExtract %float %53 0
%54 = OpCompositeExtract %float %52 1 %55 = OpCompositeExtract %float %53 1
%56 = OpCompositeConstruct %v4float %53 %54 %float_0 %float_1 %56 = OpCompositeConstruct %v4float %54 %55 %11 %float_1
OpReturnValue %56 OpReturnValue %56
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %57 %main = OpFunction %void None %57

View File

@ -31,8 +31,8 @@
%15 = OpConstantNull %v4uint %15 = OpConstantNull %v4uint
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%int_0 = OpConstant %int 0 %20 = OpConstantNull %v2int
%21 = OpConstantComposite %v2int %int_0 %int_0 %21 = OpConstantNull %int
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
@ -40,7 +40,7 @@
%11 = OpLabel %11 = OpLabel
%srcValue = OpVariable %_ptr_Function_v4uint Function %15 %srcValue = OpVariable %_ptr_Function_v4uint Function %15
%17 = OpLoad %3 %Src %17 = OpLoad %3 %Src
%16 = OpImageFetch %v4uint %17 %21 Lod %int_0 %16 = OpImageFetch %v4uint %17 %20 Lod %21
OpStore %srcValue %16 OpStore %srcValue %16
%24 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0 %24 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0
%25 = OpLoad %uint %24 %25 = OpLoad %uint %24
@ -50,7 +50,7 @@
OpStore %26 %29 OpStore %26 %29
%30 = OpLoad %v4uint %srcValue %30 = OpLoad %v4uint %srcValue
%32 = OpLoad %7 %Dst %32 = OpLoad %7 %Dst
OpImageWrite %32 %21 %30 OpImageWrite %32 %20 %30
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %8 %main = OpFunction %void None %8

View File

@ -30,8 +30,8 @@
%15 = OpConstantNull %v4uint %15 = OpConstantNull %v4uint
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%int_0 = OpConstant %int 0 %20 = OpConstantNull %v2int
%21 = OpConstantComposite %v2int %int_0 %int_0 %21 = OpConstantNull %int
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
@ -39,7 +39,7 @@
%11 = OpLabel %11 = OpLabel
%srcValue = OpVariable %_ptr_Function_v4uint Function %15 %srcValue = OpVariable %_ptr_Function_v4uint Function %15
%17 = OpLoad %3 %Src %17 = OpLoad %3 %Src
%16 = OpImageFetch %v4uint %17 %21 Lod %int_0 %16 = OpImageFetch %v4uint %17 %20 Lod %21
OpStore %srcValue %16 OpStore %srcValue %16
%24 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0 %24 = OpAccessChain %_ptr_Function_uint %srcValue %uint_0
%25 = OpLoad %uint %24 %25 = OpLoad %uint %24
@ -47,6 +47,6 @@
%28 = OpLoad %v4uint %srcValue %28 = OpLoad %v4uint %srcValue
%30 = OpLoad %7 %Dst %30 = OpLoad %7 %Dst
%31 = OpVectorShuffle %v4uint %28 %28 0 0 0 0 %31 = OpVectorShuffle %v4uint %28 %28 0 0 0 0
OpImageWrite %30 %21 %31 OpImageWrite %30 %20 %31
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 137 ; Bound: 138
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpCapability ImageQuery OpCapability ImageQuery
@ -85,20 +85,21 @@
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%v4float = OpTypeVector %float 4 %v4float = OpTypeVector %float 4
%62 = OpConstantNull %int
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%64 = OpConstantNull %v4float %65 = OpConstantNull %v4float
%true = OpConstantTrue %bool %true = OpConstantTrue %bool
%_ptr_Function_bool = OpTypePointer Function %bool %_ptr_Function_bool = OpTypePointer Function %bool
%72 = OpConstantNull %bool %73 = OpConstantNull %bool
%v4uint = OpTypeVector %uint 4 %v4uint = OpTypeVector %uint 4
%_ptr_Function_v4uint = OpTypePointer Function %v4uint %_ptr_Function_v4uint = OpTypePointer Function %v4uint
%76 = OpConstantNull %v4uint %77 = OpConstantNull %v4uint
%81 = OpConstantNull %uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%82 = OpConstantNull %uint
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%132 = OpTypeFunction %void %133 = OpTypeFunction %void
%ConvertToFp16FloatValue = OpFunction %uint None %17 %ConvertToFp16FloatValue = OpFunction %uint None %17
%fp32 = OpFunctionParameter %float %fp32 = OpFunctionParameter %float
%20 = OpLabel %20 = OpLabel
@ -110,13 +111,13 @@
%size = OpVariable %_ptr_Function_v2int Function %34 %size = OpVariable %_ptr_Function_v2int Function %34
%dstTexCoord = OpVariable %_ptr_Function_v2int Function %34 %dstTexCoord = OpVariable %_ptr_Function_v2int Function %34
%srcTexCoord = OpVariable %_ptr_Function_v2int Function %34 %srcTexCoord = OpVariable %_ptr_Function_v2int Function %34
%srcColor = OpVariable %_ptr_Function_v4float Function %64 %srcColor = OpVariable %_ptr_Function_v4float Function %65
%dstColor = OpVariable %_ptr_Function_v4float Function %64 %dstColor = OpVariable %_ptr_Function_v4float Function %65
%success = OpVariable %_ptr_Function_bool Function %72 %success = OpVariable %_ptr_Function_bool Function %73
%srcColorBits = OpVariable %_ptr_Function_v4uint Function %76 %srcColorBits = OpVariable %_ptr_Function_v4uint Function %77
%dstColorBits = OpVariable %_ptr_Function_v4uint Function %76 %dstColorBits = OpVariable %_ptr_Function_v4uint Function %77
%i = OpVariable %_ptr_Function_uint Function %82 %i = OpVariable %_ptr_Function_uint Function %81
%outputIndex = OpVariable %_ptr_Function_uint Function %82 %outputIndex = OpVariable %_ptr_Function_uint Function %81
%30 = OpLoad %7 %src %30 = OpLoad %7 %src
%27 = OpImageQuerySizeLod %v2int %30 %int_0 %27 = OpImageQuerySizeLod %v2int %30 %int_0
OpStore %size %27 OpStore %size %27
@ -143,88 +144,88 @@
%47 = OpLabel %47 = OpLabel
%60 = OpLoad %7 %src %60 = OpLoad %7 %src
%61 = OpLoad %v2int %srcTexCoord %61 = OpLoad %v2int %srcTexCoord
%58 = OpImageFetch %v4float %60 %61 Lod %int_0 %58 = OpImageFetch %v4float %60 %61 Lod %62
OpStore %srcColor %58 OpStore %srcColor %58
%66 = OpLoad %7 %dst %67 = OpLoad %7 %dst
%67 = OpLoad %v2int %dstTexCoord %68 = OpLoad %v2int %dstTexCoord
%65 = OpImageFetch %v4float %66 %67 Lod %int_0 %66 = OpImageFetch %v4float %67 %68 Lod %62
OpStore %dstColor %65 OpStore %dstColor %66
OpStore %success %true OpStore %success %true
%78 = OpLoad %v4float %dstColor %79 = OpLoad %v4float %dstColor
%77 = OpConvertFToU %v4uint %78 %78 = OpConvertFToU %v4uint %79
OpStore %dstColorBits %77 OpStore %dstColorBits %78
OpStore %i %uint_0 OpStore %i %81
OpBranch %83 OpBranch %84
%83 = OpLabel %84 = OpLabel
OpLoopMerge %84 %85 None OpLoopMerge %85 %86 None
OpBranch %87
%87 = OpLabel
%89 = OpLoad %uint %i
%91 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3
%92 = OpLoad %uint %91
%93 = OpULessThan %bool %89 %92
%88 = OpLogicalNot %bool %93
OpSelectionMerge %94 None
OpBranchConditional %88 %95 %94
%95 = OpLabel
OpBranch %85
%94 = OpLabel
%97 = OpLoad %uint %i
%99 = OpAccessChain %_ptr_Function_float %srcColor %97
%100 = OpLoad %float %99
%96 = OpFunctionCall %uint %ConvertToFp16FloatValue %100
%101 = OpLoad %uint %i
%102 = OpAccessChain %_ptr_Function_uint %srcColorBits %101
OpStore %102 %96
%103 = OpLoad %bool %success
OpSelectionMerge %104 None
OpBranchConditional %103 %105 %104
%105 = OpLabel
%106 = OpLoad %uint %i
%107 = OpAccessChain %_ptr_Function_uint %srcColorBits %106
%108 = OpLoad %uint %107
%109 = OpLoad %uint %i
%110 = OpAccessChain %_ptr_Function_uint %dstColorBits %109
%111 = OpLoad %uint %110
%112 = OpIEqual %bool %108 %111
OpBranch %104
%104 = OpLabel
%113 = OpPhi %bool %103 %94 %112 %105
OpStore %success %113
OpBranch %86 OpBranch %86
%86 = OpLabel %86 = OpLabel
%88 = OpLoad %uint %i %114 = OpLoad %uint %i
%90 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %115 = OpIAdd %uint %114 %uint_1
%91 = OpLoad %uint %90 OpStore %i %115
%92 = OpULessThan %bool %88 %91
%87 = OpLogicalNot %bool %92
OpSelectionMerge %93 None
OpBranchConditional %87 %94 %93
%94 = OpLabel
OpBranch %84 OpBranch %84
%93 = OpLabel
%96 = OpLoad %uint %i
%98 = OpAccessChain %_ptr_Function_float %srcColor %96
%99 = OpLoad %float %98
%95 = OpFunctionCall %uint %ConvertToFp16FloatValue %99
%100 = OpLoad %uint %i
%101 = OpAccessChain %_ptr_Function_uint %srcColorBits %100
OpStore %101 %95
%102 = OpLoad %bool %success
OpSelectionMerge %103 None
OpBranchConditional %102 %104 %103
%104 = OpLabel
%105 = OpLoad %uint %i
%106 = OpAccessChain %_ptr_Function_uint %srcColorBits %105
%107 = OpLoad %uint %106
%108 = OpLoad %uint %i
%109 = OpAccessChain %_ptr_Function_uint %dstColorBits %108
%110 = OpLoad %uint %109
%111 = OpIEqual %bool %107 %110
OpBranch %103
%103 = OpLabel
%112 = OpPhi %bool %102 %93 %111 %104
OpStore %success %112
OpBranch %85
%85 = OpLabel %85 = OpLabel
%113 = OpLoad %uint %i %116 = OpCompositeExtract %uint %GlobalInvocationID 1
%114 = OpIAdd %uint %113 %uint_1 %118 = OpAccessChain %_ptr_Function_int %size %uint_0
OpStore %i %114 %119 = OpLoad %int %118
OpBranch %83 %117 = OpBitcast %uint %119
%84 = OpLabel %120 = OpIMul %uint %116 %117
%115 = OpCompositeExtract %uint %GlobalInvocationID 1 %121 = OpCompositeExtract %uint %GlobalInvocationID 0
%117 = OpAccessChain %_ptr_Function_int %size %uint_0 %122 = OpIAdd %uint %120 %121
%118 = OpLoad %int %117 OpStore %outputIndex %122
%116 = OpBitcast %uint %118 %124 = OpLoad %bool %success
%119 = OpIMul %uint %115 %116 OpSelectionMerge %125 None
%120 = OpCompositeExtract %uint %GlobalInvocationID 0 OpBranchConditional %124 %126 %127
%121 = OpIAdd %uint %119 %120
OpStore %outputIndex %121
%123 = OpLoad %bool %success
OpSelectionMerge %124 None
OpBranchConditional %123 %125 %126
%125 = OpLabel
%127 = OpLoad %uint %outputIndex
%129 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %127
OpStore %129 %uint_1
OpBranch %124
%126 = OpLabel %126 = OpLabel
%130 = OpLoad %uint %outputIndex %128 = OpLoad %uint %outputIndex
%131 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %130 %130 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %128
OpStore %131 %uint_0 OpStore %130 %uint_1
OpBranch %124 OpBranch %125
%124 = OpLabel %127 = OpLabel
%131 = OpLoad %uint %outputIndex
%132 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %131
OpStore %132 %81
OpBranch %125
%125 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %132 %main = OpFunction %void None %133
%134 = OpLabel %135 = OpLabel
%136 = OpLoad %v3uint %GlobalInvocationID_1 %137 = OpLoad %v3uint %GlobalInvocationID_1
%135 = OpFunctionCall %void %main_inner %136 %136 = OpFunctionCall %void %main_inner %137
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -63,16 +63,16 @@
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%31 = OpConstantNull %uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%33 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%69 = OpTypeFunction %void %69 = OpTypeFunction %void
%main_inner = OpFunction %void None %15 %main_inner = OpFunction %void None %15
%global_id = OpFunctionParameter %v3uint %global_id = OpFunctionParameter %v3uint
%19 = OpLabel %19 = OpLabel
%result = OpVariable %_ptr_Function_uint Function %33 %result = OpVariable %_ptr_Function_uint Function %31
%i = OpVariable %_ptr_Function_uint Function %33 %i = OpVariable %_ptr_Function_uint Function %31
%20 = OpCompositeExtract %uint %global_id 1 %20 = OpCompositeExtract %uint %global_id 1
%21 = OpCompositeExtract %uint %global_id 0 %21 = OpCompositeExtract %uint %global_id 0
%22 = OpCompositeConstruct %v2uint %20 %21 %22 = OpCompositeConstruct %v2uint %20 %21
@ -80,8 +80,8 @@
%27 = OpLoad %uint %26 %27 = OpLoad %uint %26
%29 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_2 %uint_1 %29 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_2 %uint_1
%30 = OpLoad %uint %29 %30 = OpLoad %uint %29
OpStore %result %uint_0 OpStore %result %31
OpStore %i %uint_0 OpStore %i %31
OpBranch %35 OpBranch %35
%35 = OpLabel %35 = OpLabel
OpLoopMerge %36 %37 None OpLoopMerge %36 %37 None

File diff suppressed because it is too large Load Diff

View File

@ -60,11 +60,11 @@
%v3int = OpTypeVector %int 3 %v3int = OpTypeVector %int 3
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%v2uint = OpTypeVector %uint 2 %v2uint = OpTypeVector %uint 2
%int_0 = OpConstant %int 0 %47 = OpConstantNull %int
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%51 = OpConstantNull %v4float %51 = OpConstantNull %v4float
%uint_0 = OpConstant %uint 0
%bool = OpTypeBool %bool = OpTypeBool
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%74 = OpTypeFunction %void %74 = OpTypeFunction %void
@ -91,23 +91,23 @@
%41 = OpBitcast %v2int %44 %41 = OpBitcast %v2int %44
%45 = OpCompositeExtract %int %41 0 %45 = OpCompositeExtract %int %41 0
%46 = OpCompositeExtract %int %41 1 %46 = OpCompositeExtract %int %41 1
%48 = OpCompositeConstruct %v3int %45 %46 %int_0 %48 = OpCompositeConstruct %v3int %45 %46 %47
%37 = OpImageFetch %v4float %39 %48 Lod %int_0 %37 = OpImageFetch %v4float %39 %48 Lod %47
OpStore %texel %37 OpStore %texel %37
OpStore %i %uint_0 OpStore %i %33
OpBranch %54 OpBranch %53
%54 = OpLabel %53 = OpLabel
OpLoopMerge %55 %56 None OpLoopMerge %54 %55 None
OpBranch %57 OpBranch %56
%57 = OpLabel %56 = OpLabel
%59 = OpLoad %uint %i %58 = OpLoad %uint %i
%60 = OpULessThan %bool %59 %uint_1 %59 = OpULessThan %bool %58 %uint_1
%58 = OpLogicalNot %bool %60 %57 = OpLogicalNot %bool %59
OpSelectionMerge %62 None OpSelectionMerge %61 None
OpBranchConditional %58 %63 %62 OpBranchConditional %57 %62 %61
%63 = OpLabel
OpBranch %55
%62 = OpLabel %62 = OpLabel
OpBranch %54
%61 = OpLabel
%64 = OpLoad %uint %flatIndex %64 = OpLoad %uint %flatIndex
%65 = OpLoad %uint %i %65 = OpLoad %uint %i
%66 = OpIAdd %uint %64 %65 %66 = OpIAdd %uint %64 %65
@ -115,13 +115,13 @@
%70 = OpAccessChain %_ptr_Function_float %texel %uint_0 %70 = OpAccessChain %_ptr_Function_float %texel %uint_0
%71 = OpLoad %float %70 %71 = OpLoad %float %70
OpStore %68 %71 OpStore %68 %71
OpBranch %56 OpBranch %55
%56 = OpLabel %55 = OpLabel
%72 = OpLoad %uint %i %72 = OpLoad %uint %i
%73 = OpIAdd %uint %72 %uint_1 %73 = OpIAdd %uint %72 %uint_1
OpStore %i %73 OpStore %i %73
OpBranch %54 OpBranch %53
%55 = OpLabel %54 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %74 %main = OpFunction %void None %74

View File

@ -18,7 +18,7 @@
%11 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %11 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%12 = OpConstantComposite %mat4v4float %11 %11 %11 %11 %12 = OpConstantComposite %mat4v4float %11 %11 %11 %11
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %14 = OpConstantNull %int
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
OpReturn OpReturn

View File

@ -44,7 +44,7 @@
%v4float = OpTypeVector %float 4 %v4float = OpTypeVector %float 4
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%int_0 = OpConstant %int 0 %37 = OpConstantNull %int
%38 = OpTypeFunction %void %38 = OpTypeFunction %void
%main_inner = OpFunction %void None %14 %main_inner = OpFunction %void None %14
%GlobalInvocationId = OpFunctionParameter %v3uint %GlobalInvocationId = OpFunctionParameter %v3uint
@ -60,7 +60,7 @@
%35 = OpCompositeExtract %uint %GlobalInvocationId 1 %35 = OpCompositeExtract %uint %GlobalInvocationId 1
%34 = OpBitcast %int %35 %34 = OpBitcast %int %35
%36 = OpCompositeConstruct %v2int %32 %34 %36 = OpCompositeConstruct %v2int %32 %34
%27 = OpImageFetch %v4float %29 %36 Lod %int_0 %27 = OpImageFetch %v4float %29 %36 Lod %37
%26 = OpCompositeExtract %float %27 0 %26 = OpCompositeExtract %float %27 0
OpStore %25 %26 OpStore %25 %26
OpReturn OpReturn

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 49 ; Bound: 50
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -45,8 +45,9 @@
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%_ptr_StorageBuffer__arr_int_uint_6 = OpTypePointer StorageBuffer %_arr_int_uint_6 %_ptr_StorageBuffer__arr_int_uint_6 = OpTypePointer StorageBuffer %_arr_int_uint_6
%int_0 = OpConstant %int 0 %23 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%26 = OpConstantNull %uint
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
@ -61,28 +62,28 @@
%orientation = OpVariable %_ptr_Function__arr_int_uint_6 Function %17 %orientation = OpVariable %_ptr_Function__arr_int_uint_6 Function %17
%21 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_6 %sspp962805860buildInformation %uint_0 %uint_3 %21 = OpAccessChain %_ptr_StorageBuffer__arr_int_uint_6 %sspp962805860buildInformation %uint_0 %uint_3
%22 = OpLoad %_arr_int_uint_6 %21 %22 = OpLoad %_arr_int_uint_6 %21
%25 = OpAccessChain %_ptr_Function_int %orientation %int_0 %25 = OpAccessChain %_ptr_Function_int %orientation %23
%26 = OpCompositeExtract %int %22 0 %27 = OpCompositeExtract %int %22 0
OpStore %25 %26 OpStore %25 %27
%28 = OpAccessChain %_ptr_Function_int %orientation %int_1 %29 = OpAccessChain %_ptr_Function_int %orientation %int_1
%30 = OpCompositeExtract %int %22 1 %31 = OpCompositeExtract %int %22 1
OpStore %28 %30 OpStore %29 %31
%32 = OpAccessChain %_ptr_Function_int %orientation %int_2 %33 = OpAccessChain %_ptr_Function_int %orientation %int_2
%34 = OpCompositeExtract %int %22 2 %35 = OpCompositeExtract %int %22 2
OpStore %32 %34 OpStore %33 %35
%36 = OpAccessChain %_ptr_Function_int %orientation %int_3 %37 = OpAccessChain %_ptr_Function_int %orientation %int_3
%37 = OpCompositeExtract %int %22 3 %38 = OpCompositeExtract %int %22 3
OpStore %36 %37 OpStore %37 %38
%39 = OpAccessChain %_ptr_Function_int %orientation %int_4 %40 = OpAccessChain %_ptr_Function_int %orientation %int_4
%41 = OpCompositeExtract %int %22 4 %42 = OpCompositeExtract %int %22 4
OpStore %39 %41 OpStore %40 %42
%43 = OpAccessChain %_ptr_Function_int %orientation %int_5 %44 = OpAccessChain %_ptr_Function_int %orientation %int_5
%45 = OpCompositeExtract %int %22 5 %46 = OpCompositeExtract %int %22 5
OpStore %43 %45 OpStore %44 %46
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %11 %main = OpFunction %void None %11
%47 = OpLabel %48 = OpLabel
%48 = OpFunctionCall %void %main_1 %49 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 205 ; Bound: 207
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpCapability ImageQuery OpCapability ImageQuery
@ -92,14 +92,16 @@
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%97 = OpConstantNull %int
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%_ptr_Uniform_v2uint = OpTypePointer Uniform %v2uint %_ptr_Uniform_v2uint = OpTypePointer Uniform %v2uint
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%_ptr_Function_v2uint = OpTypePointer Function %v2uint %_ptr_Function_v2uint = OpTypePointer Function %v2uint
%110 = OpConstantNull %v2uint %111 = OpConstantNull %v2uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%200 = OpTypeFunction %void %201 = OpConstantNull %uint
%202 = OpTypeFunction %void
%aboutEqual = OpFunction %bool None %18 %aboutEqual = OpFunction %bool None %18
%value = OpFunctionParameter %float %value = OpFunctionParameter %float
%expect = OpFunctionParameter %float %expect = OpFunctionParameter %float
@ -113,7 +115,7 @@
%GlobalInvocationID = OpFunctionParameter %v3uint %GlobalInvocationID = OpFunctionParameter %v3uint
%33 = OpLabel %33 = OpLabel
%success = OpVariable %_ptr_Function_bool Function %50 %success = OpVariable %_ptr_Function_bool Function %50
%srcTexCoord = OpVariable %_ptr_Function_v2uint Function %110 %srcTexCoord = OpVariable %_ptr_Function_v2uint Function %111
%tint_symbol_1 = OpVariable %_ptr_Function_bool Function %50 %tint_symbol_1 = OpVariable %_ptr_Function_bool Function %50
%tint_symbol = OpVariable %_ptr_Function_bool Function %50 %tint_symbol = OpVariable %_ptr_Function_bool Function %50
%tint_symbol_5 = OpVariable %_ptr_Function_bool Function %50 %tint_symbol_5 = OpVariable %_ptr_Function_bool Function %50
@ -175,156 +177,156 @@
%92 = OpLabel %92 = OpLabel
%95 = OpLoad %7 %dst %95 = OpLoad %7 %dst
%96 = OpBitcast %v2int %42 %96 = OpBitcast %v2int %42
%94 = OpImageFetch %v4float %95 %96 Lod %int_0 %94 = OpImageFetch %v4float %95 %96 Lod %97
%97 = OpFOrdEqual %v4bool %94 %46 %98 = OpFOrdEqual %v4bool %94 %46
%93 = OpAll %bool %97 %93 = OpAll %bool %98
OpBranch %91 OpBranch %91
%91 = OpLabel %91 = OpLabel
%99 = OpPhi %bool %90 %88 %93 %92 %100 = OpPhi %bool %90 %88 %93 %92
OpStore %success %99 OpStore %success %100
OpBranch %87 OpBranch %87
%89 = OpLabel %89 = OpLabel
%101 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_3 %102 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_3
%102 = OpLoad %v2uint %101 %103 = OpLoad %v2uint %102
%103 = OpISub %v2uint %42 %102 %104 = OpISub %v2uint %42 %103
%105 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_2 %106 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_2
%106 = OpLoad %v2uint %105 %107 = OpLoad %v2uint %106
%107 = OpIAdd %v2uint %103 %106 %108 = OpIAdd %v2uint %104 %107
OpStore %srcTexCoord %107 OpStore %srcTexCoord %108
%111 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %112 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
%112 = OpLoad %uint %111 %113 = OpLoad %uint %112
%113 = OpIEqual %bool %112 %uint_1 %114 = OpIEqual %bool %113 %uint_1
OpSelectionMerge %114 None OpSelectionMerge %115 None
OpBranchConditional %113 %115 %114 OpBranchConditional %114 %116 %115
%116 = OpLabel
%118 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
%120 = OpCompositeExtract %int %34 1
%119 = OpBitcast %uint %120
%121 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
%122 = OpLoad %uint %121
%123 = OpISub %uint %119 %122
%124 = OpISub %uint %123 %uint_1
OpStore %118 %124
OpBranch %115
%115 = OpLabel %115 = OpLabel
%117 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1 %126 = OpLoad %7 %src
%119 = OpCompositeExtract %int %34 1 %128 = OpLoad %v2uint %srcTexCoord
%118 = OpBitcast %uint %119 %127 = OpBitcast %v2int %128
%120 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1 %125 = OpImageFetch %v4float %126 %127 Lod %97
%121 = OpLoad %uint %120 %130 = OpLoad %7 %dst
%122 = OpISub %uint %118 %121 %131 = OpBitcast %v2int %42
%123 = OpISub %uint %122 %uint_1 %129 = OpImageFetch %v4float %130 %131 Lod %97
OpStore %117 %123 %132 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
OpBranch %114 %133 = OpLoad %uint %132
%114 = OpLabel %134 = OpIEqual %bool %133 %uint_2
%125 = OpLoad %7 %src OpSelectionMerge %135 None
%127 = OpLoad %v2uint %srcTexCoord OpBranchConditional %134 %136 %137
%126 = OpBitcast %v2int %127
%124 = OpImageFetch %v4float %125 %126 Lod %int_0
%129 = OpLoad %7 %dst
%130 = OpBitcast %v2int %42
%128 = OpImageFetch %v4float %129 %130 Lod %int_0
%131 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%132 = OpLoad %uint %131
%133 = OpIEqual %bool %132 %uint_2
OpSelectionMerge %134 None
OpBranchConditional %133 %135 %136
%135 = OpLabel
%137 = OpLoad %bool %success
OpStore %tint_symbol_1 %137
%139 = OpLoad %bool %tint_symbol_1
OpSelectionMerge %140 None
OpBranchConditional %139 %141 %140
%141 = OpLabel
%143 = OpCompositeExtract %float %128 0
%144 = OpCompositeExtract %float %124 0
%142 = OpFunctionCall %bool %aboutEqual %143 %144
OpStore %tint_symbol_1 %142
OpBranch %140
%140 = OpLabel
%145 = OpLoad %bool %tint_symbol_1
OpStore %tint_symbol %145
%147 = OpLoad %bool %tint_symbol
OpSelectionMerge %148 None
OpBranchConditional %147 %149 %148
%149 = OpLabel
%151 = OpCompositeExtract %float %128 1
%152 = OpCompositeExtract %float %124 1
%150 = OpFunctionCall %bool %aboutEqual %151 %152
OpStore %tint_symbol %150
OpBranch %148
%148 = OpLabel
%153 = OpLoad %bool %tint_symbol
OpStore %success %153
OpBranch %134
%136 = OpLabel %136 = OpLabel
%154 = OpLoad %bool %success %138 = OpLoad %bool %success
OpStore %tint_symbol_5 %154 OpStore %tint_symbol_1 %138
%156 = OpLoad %bool %tint_symbol_5 %140 = OpLoad %bool %tint_symbol_1
OpSelectionMerge %157 None OpSelectionMerge %141 None
OpBranchConditional %156 %158 %157 OpBranchConditional %140 %142 %141
%142 = OpLabel
%144 = OpCompositeExtract %float %129 0
%145 = OpCompositeExtract %float %125 0
%143 = OpFunctionCall %bool %aboutEqual %144 %145
OpStore %tint_symbol_1 %143
OpBranch %141
%141 = OpLabel
%146 = OpLoad %bool %tint_symbol_1
OpStore %tint_symbol %146
%148 = OpLoad %bool %tint_symbol
OpSelectionMerge %149 None
OpBranchConditional %148 %150 %149
%150 = OpLabel
%152 = OpCompositeExtract %float %129 1
%153 = OpCompositeExtract %float %125 1
%151 = OpFunctionCall %bool %aboutEqual %152 %153
OpStore %tint_symbol %151
OpBranch %149
%149 = OpLabel
%154 = OpLoad %bool %tint_symbol
OpStore %success %154
OpBranch %135
%137 = OpLabel
%155 = OpLoad %bool %success
OpStore %tint_symbol_5 %155
%157 = OpLoad %bool %tint_symbol_5
OpSelectionMerge %158 None
OpBranchConditional %157 %159 %158
%159 = OpLabel
%161 = OpCompositeExtract %float %129 0
%162 = OpCompositeExtract %float %125 0
%160 = OpFunctionCall %bool %aboutEqual %161 %162
OpStore %tint_symbol_5 %160
OpBranch %158
%158 = OpLabel %158 = OpLabel
%160 = OpCompositeExtract %float %128 0 %163 = OpLoad %bool %tint_symbol_5
%161 = OpCompositeExtract %float %124 0 OpStore %tint_symbol_4 %163
%159 = OpFunctionCall %bool %aboutEqual %160 %161 %165 = OpLoad %bool %tint_symbol_4
OpStore %tint_symbol_5 %159 OpSelectionMerge %166 None
OpBranch %157 OpBranchConditional %165 %167 %166
%157 = OpLabel %167 = OpLabel
%162 = OpLoad %bool %tint_symbol_5 %169 = OpCompositeExtract %float %129 1
OpStore %tint_symbol_4 %162 %170 = OpCompositeExtract %float %125 1
%164 = OpLoad %bool %tint_symbol_4 %168 = OpFunctionCall %bool %aboutEqual %169 %170
OpSelectionMerge %165 None OpStore %tint_symbol_4 %168
OpBranchConditional %164 %166 %165 OpBranch %166
%166 = OpLabel %166 = OpLabel
%168 = OpCompositeExtract %float %128 1 %171 = OpLoad %bool %tint_symbol_4
%169 = OpCompositeExtract %float %124 1 OpStore %tint_symbol_3 %171
%167 = OpFunctionCall %bool %aboutEqual %168 %169 %173 = OpLoad %bool %tint_symbol_3
OpStore %tint_symbol_4 %167 OpSelectionMerge %174 None
OpBranch %165 OpBranchConditional %173 %175 %174
%165 = OpLabel %175 = OpLabel
%170 = OpLoad %bool %tint_symbol_4 %177 = OpCompositeExtract %float %129 2
OpStore %tint_symbol_3 %170 %178 = OpCompositeExtract %float %125 2
%172 = OpLoad %bool %tint_symbol_3 %176 = OpFunctionCall %bool %aboutEqual %177 %178
OpSelectionMerge %173 None OpStore %tint_symbol_3 %176
OpBranchConditional %172 %174 %173 OpBranch %174
%174 = OpLabel %174 = OpLabel
%176 = OpCompositeExtract %float %128 2 %179 = OpLoad %bool %tint_symbol_3
%177 = OpCompositeExtract %float %124 2 OpStore %tint_symbol_2 %179
%175 = OpFunctionCall %bool %aboutEqual %176 %177 %181 = OpLoad %bool %tint_symbol_2
OpStore %tint_symbol_3 %175 OpSelectionMerge %182 None
OpBranch %173 OpBranchConditional %181 %183 %182
%173 = OpLabel %183 = OpLabel
%178 = OpLoad %bool %tint_symbol_3 %185 = OpCompositeExtract %float %129 3
OpStore %tint_symbol_2 %178 %186 = OpCompositeExtract %float %125 3
%180 = OpLoad %bool %tint_symbol_2 %184 = OpFunctionCall %bool %aboutEqual %185 %186
OpSelectionMerge %181 None OpStore %tint_symbol_2 %184
OpBranchConditional %180 %182 %181 OpBranch %182
%182 = OpLabel %182 = OpLabel
%184 = OpCompositeExtract %float %128 3 %187 = OpLoad %bool %tint_symbol_2
%185 = OpCompositeExtract %float %124 3 OpStore %success %187
%183 = OpFunctionCall %bool %aboutEqual %184 %185 OpBranch %135
OpStore %tint_symbol_2 %183 %135 = OpLabel
OpBranch %181
%181 = OpLabel
%186 = OpLoad %bool %tint_symbol_2
OpStore %success %186
OpBranch %134
%134 = OpLabel
OpBranch %87 OpBranch %87
%87 = OpLabel %87 = OpLabel
%187 = OpCompositeExtract %uint %GlobalInvocationID 1 %188 = OpCompositeExtract %uint %GlobalInvocationID 1
%189 = OpCompositeExtract %int %39 0 %190 = OpCompositeExtract %int %39 0
%188 = OpBitcast %uint %189 %189 = OpBitcast %uint %190
%190 = OpIMul %uint %187 %188 %191 = OpIMul %uint %188 %189
%191 = OpCompositeExtract %uint %GlobalInvocationID 0 %192 = OpCompositeExtract %uint %GlobalInvocationID 0
%192 = OpIAdd %uint %190 %191 %193 = OpIAdd %uint %191 %192
%193 = OpLoad %bool %success %194 = OpLoad %bool %success
OpSelectionMerge %194 None OpSelectionMerge %195 None
OpBranchConditional %193 %195 %196 OpBranchConditional %194 %196 %197
%195 = OpLabel
%198 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %192
OpStore %198 %uint_1
OpBranch %194
%196 = OpLabel %196 = OpLabel
%199 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %192 %199 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %193
OpStore %199 %uint_0 OpStore %199 %uint_1
OpBranch %194 OpBranch %195
%194 = OpLabel %197 = OpLabel
%200 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %193
OpStore %200 %201
OpBranch %195
%195 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %200 %main = OpFunction %void None %202
%202 = OpLabel %204 = OpLabel
%204 = OpLoad %v3uint %GlobalInvocationID_1 %206 = OpLoad %v3uint %GlobalInvocationID_1
%203 = OpFunctionCall %void %main_inner %204 %205 = OpFunctionCall %void %main_inner %206
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 375 ; Bound: 374
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -114,7 +114,7 @@
%bool = OpTypeBool %bool = OpTypeBool
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%float_0 = OpConstant %float 0 %52 = OpConstantNull %float
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%void = OpTypeVoid %void = OpTypeVoid
%75 = OpTypeFunction %void %uint %uint %float %75 = OpTypeFunction %void %uint %uint %float
@ -123,18 +123,17 @@
%106 = OpConstantNull %uint %106 = OpConstantNull %uint
%uint_4096 = OpConstant %uint 4096 %uint_4096 = OpConstant %uint 4096
%_ptr_Workgroup_float = OpTypePointer Workgroup %float %_ptr_Workgroup_float = OpTypePointer Workgroup %float
%123 = OpConstantNull %float
%uint_256 = OpConstant %uint 256 %uint_256 = OpConstant %uint 256
%uint_264 = OpConstant %uint 264 %uint_264 = OpConstant %uint 264
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%_arr_float_uint_16 = OpTypeArray %float %uint_16 %_arr_float_uint_16 = OpTypeArray %float %uint_16
%_ptr_Function__arr_float_uint_16 = OpTypePointer Function %_arr_float_uint_16 %_ptr_Function__arr_float_uint_16 = OpTypePointer Function %_arr_float_uint_16
%147 = OpConstantNull %_arr_float_uint_16 %146 = OpConstantNull %_arr_float_uint_16
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%_arr_float_RowPerThread = OpTypeArray %float %RowPerThread %_arr_float_RowPerThread = OpTypeArray %float %RowPerThread
%_ptr_Function__arr_float_RowPerThread = OpTypePointer Function %_arr_float_RowPerThread %_ptr_Function__arr_float_RowPerThread = OpTypePointer Function %_arr_float_RowPerThread
%153 = OpConstantNull %_arr_float_RowPerThread %152 = OpConstantNull %_arr_float_RowPerThread
%368 = OpTypeFunction %void %367 = OpTypeFunction %void
%mm_readA = OpFunction %float None %25 %mm_readA = OpFunction %float None %25
%row = OpFunctionParameter %uint %row = OpFunctionParameter %uint
%col = OpFunctionParameter %uint %col = OpFunctionParameter %uint
@ -162,7 +161,7 @@
%51 = OpLoad %float %50 %51 = OpLoad %float %50
OpReturnValue %51 OpReturnValue %51
%43 = OpLabel %43 = OpLabel
OpReturnValue %float_0 OpReturnValue %52
OpFunctionEnd OpFunctionEnd
%mm_readB = OpFunction %float None %25 %mm_readB = OpFunction %float None %25
%row_0 = OpFunctionParameter %uint %row_0 = OpFunctionParameter %uint
@ -191,7 +190,7 @@
%74 = OpLoad %float %73 %74 = OpLoad %float %73
OpReturnValue %74 OpReturnValue %74
%67 = OpLabel %67 = OpLabel
OpReturnValue %float_0 OpReturnValue %52
OpFunctionEnd OpFunctionEnd
%mm_write = OpFunction %void None %75 %mm_write = OpFunction %void None %75
%row_1 = OpFunctionParameter %uint %row_1 = OpFunctionParameter %uint
@ -229,9 +228,9 @@
%local_invocation_index = OpFunctionParameter %uint %local_invocation_index = OpFunctionParameter %uint
%103 = OpLabel %103 = OpLabel
%idx = OpVariable %_ptr_Function_uint Function %106 %idx = OpVariable %_ptr_Function_uint Function %106
%acc = OpVariable %_ptr_Function__arr_float_uint_16 Function %147 %acc = OpVariable %_ptr_Function__arr_float_uint_16 Function %146
%ACached = OpVariable %_ptr_Function_float Function %123 %ACached = OpVariable %_ptr_Function_float Function %52
%BCached = OpVariable %_ptr_Function__arr_float_RowPerThread Function %153 %BCached = OpVariable %_ptr_Function__arr_float_RowPerThread Function %152
%index = OpVariable %_ptr_Function_uint Function %106 %index = OpVariable %_ptr_Function_uint Function %106
%t = OpVariable %_ptr_Function_uint Function %106 %t = OpVariable %_ptr_Function_uint Function %106
%innerRow = OpVariable %_ptr_Function_uint Function %106 %innerRow = OpVariable %_ptr_Function_uint Function %106
@ -263,365 +262,365 @@
%119 = OpLoad %uint %idx %119 = OpLoad %uint %idx
%120 = OpUMod %uint %119 %TileAOuter %120 = OpUMod %uint %119 %TileAOuter
%122 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %118 %120 %122 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %118 %120
OpStore %122 %123 OpStore %122 %52
%124 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %118 %120 %123 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %118 %120
OpStore %124 %123 OpStore %123 %52
OpBranch %109 OpBranch %109
%109 = OpLabel %109 = OpLabel
%125 = OpLoad %uint %idx %124 = OpLoad %uint %idx
%127 = OpIAdd %uint %125 %uint_256 %126 = OpIAdd %uint %124 %uint_256
OpStore %idx %127 OpStore %idx %126
OpBranch %107 OpBranch %107
%108 = OpLabel %108 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264 OpControlBarrier %uint_2 %uint_2 %uint_264
%130 = OpCompositeExtract %uint %local_id 1 %129 = OpCompositeExtract %uint %local_id 1
%131 = OpIMul %uint %130 %RowPerThread %130 = OpIMul %uint %129 %RowPerThread
%132 = OpCompositeExtract %uint %local_id 0 %131 = OpCompositeExtract %uint %local_id 0
%133 = OpIMul %uint %132 %RowPerThread %132 = OpIMul %uint %131 %RowPerThread
%134 = OpCompositeExtract %uint %global_id 1 %133 = OpCompositeExtract %uint %global_id 1
%135 = OpIMul %uint %134 %RowPerThread %134 = OpIMul %uint %133 %RowPerThread
%136 = OpCompositeExtract %uint %global_id 0 %135 = OpCompositeExtract %uint %global_id 0
%137 = OpIMul %uint %136 %RowPerThread %136 = OpIMul %uint %135 %RowPerThread
%138 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %137 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%139 = OpLoad %uint %138 %138 = OpLoad %uint %137
%140 = OpISub %uint %139 %uint_1 %139 = OpISub %uint %138 %uint_1
%141 = OpUDiv %uint %140 %TileAOuter %140 = OpUDiv %uint %139 %TileAOuter
%142 = OpIAdd %uint %141 %uint_1 %141 = OpIAdd %uint %140 %uint_1
OpStore %index %uint_0 OpStore %index %106
OpBranch %155 OpBranch %154
%155 = OpLabel %154 = OpLabel
OpLoopMerge %156 %157 None OpLoopMerge %155 %156 None
OpBranch %158
%158 = OpLabel
%160 = OpLoad %uint %index
%161 = OpIMul %uint %RowPerThread %RowPerThread
%162 = OpULessThan %bool %160 %161
%159 = OpLogicalNot %bool %162
OpSelectionMerge %163 None
OpBranchConditional %159 %164 %163
%164 = OpLabel
OpBranch %156
%163 = OpLabel
%165 = OpLoad %uint %index
%166 = OpAccessChain %_ptr_Function_float %acc %165
OpStore %166 %float_0
OpBranch %157 OpBranch %157
%157 = OpLabel %157 = OpLabel
%167 = OpLoad %uint %index %159 = OpLoad %uint %index
%168 = OpIAdd %uint %167 %uint_1 %160 = OpIMul %uint %RowPerThread %RowPerThread
OpStore %index %168 %161 = OpULessThan %bool %159 %160
%158 = OpLogicalNot %bool %161
OpSelectionMerge %162 None
OpBranchConditional %158 %163 %162
%163 = OpLabel
OpBranch %155 OpBranch %155
%162 = OpLabel
%164 = OpLoad %uint %index
%165 = OpAccessChain %_ptr_Function_float %acc %164
OpStore %165 %52
OpBranch %156
%156 = OpLabel %156 = OpLabel
%169 = OpUDiv %uint %TileAOuter %uint_16 %166 = OpLoad %uint %index
%170 = OpCompositeExtract %uint %local_id 0 %167 = OpIAdd %uint %166 %uint_1
%171 = OpIMul %uint %170 %169 OpStore %index %167
%172 = OpUDiv %uint %TileAOuter %uint_16 OpBranch %154
%173 = OpCompositeExtract %uint %local_id 1 %155 = OpLabel
%174 = OpIMul %uint %173 %172 %168 = OpUDiv %uint %TileAOuter %uint_16
OpStore %t %uint_0 %169 = OpCompositeExtract %uint %local_id 0
OpBranch %176 %170 = OpIMul %uint %169 %168
%176 = OpLabel %171 = OpUDiv %uint %TileAOuter %uint_16
OpLoopMerge %177 %178 None %172 = OpCompositeExtract %uint %local_id 1
OpBranch %179 %173 = OpIMul %uint %172 %171
%179 = OpLabel OpStore %t %106
%181 = OpLoad %uint %t OpBranch %175
%182 = OpULessThan %bool %181 %142 %175 = OpLabel
%180 = OpLogicalNot %bool %182 OpLoopMerge %176 %177 None
OpSelectionMerge %183 None
OpBranchConditional %180 %184 %183
%184 = OpLabel
OpBranch %177
%183 = OpLabel
OpStore %innerRow %uint_0
OpBranch %186
%186 = OpLabel
OpLoopMerge %187 %188 None
OpBranch %189
%189 = OpLabel
%191 = OpLoad %uint %innerRow
%192 = OpULessThan %bool %191 %RowPerThread
%190 = OpLogicalNot %bool %192
OpSelectionMerge %193 None
OpBranchConditional %190 %194 %193
%194 = OpLabel
OpBranch %187
%193 = OpLabel
OpStore %innerCol %uint_0
OpBranch %196
%196 = OpLabel
OpLoopMerge %197 %198 None
OpBranch %199
%199 = OpLabel
%201 = OpLoad %uint %innerCol
%202 = OpULessThan %bool %201 %169
%200 = OpLogicalNot %bool %202
OpSelectionMerge %203 None
OpBranchConditional %200 %204 %203
%204 = OpLabel
OpBranch %197
%203 = OpLabel
%205 = OpLoad %uint %innerRow
%206 = OpIAdd %uint %131 %205
%207 = OpLoad %uint %innerCol
%208 = OpIAdd %uint %171 %207
%210 = OpLoad %uint %innerRow
%211 = OpIAdd %uint %135 %210
%212 = OpLoad %uint %t
%213 = OpIMul %uint %212 %TileAOuter
%214 = OpIAdd %uint %213 %208
%209 = OpFunctionCall %float %mm_readA %211 %214
%215 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %206 %208
OpStore %215 %209
OpBranch %198
%198 = OpLabel
%216 = OpLoad %uint %innerCol
%217 = OpIAdd %uint %216 %uint_1
OpStore %innerCol %217
OpBranch %196
%197 = OpLabel
OpBranch %188
%188 = OpLabel
%218 = OpLoad %uint %innerRow
%219 = OpIAdd %uint %218 %uint_1
OpStore %innerRow %219
OpBranch %186
%187 = OpLabel
OpStore %innerRow_0 %uint_0
OpBranch %221
%221 = OpLabel
OpLoopMerge %222 %223 None
OpBranch %224
%224 = OpLabel
%226 = OpLoad %uint %innerRow_0
%227 = OpULessThan %bool %226 %172
%225 = OpLogicalNot %bool %227
OpSelectionMerge %228 None
OpBranchConditional %225 %229 %228
%229 = OpLabel
OpBranch %222
%228 = OpLabel
OpStore %innerCol_0 %uint_0
OpBranch %231
%231 = OpLabel
OpLoopMerge %232 %233 None
OpBranch %234
%234 = OpLabel
%236 = OpLoad %uint %innerCol_0
%237 = OpULessThan %bool %236 %RowPerThread
%235 = OpLogicalNot %bool %237
OpSelectionMerge %238 None
OpBranchConditional %235 %239 %238
%239 = OpLabel
OpBranch %232
%238 = OpLabel
%240 = OpLoad %uint %innerRow_0
%241 = OpIAdd %uint %174 %240
%242 = OpLoad %uint %innerCol_0
%243 = OpIAdd %uint %133 %242
%245 = OpLoad %uint %t
%246 = OpIMul %uint %245 %TileAOuter
%247 = OpIAdd %uint %246 %241
%248 = OpLoad %uint %innerCol_0
%249 = OpIAdd %uint %137 %248
%244 = OpFunctionCall %float %mm_readB %247 %249
%250 = OpLoad %uint %innerCol_0
%251 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %250 %243
OpStore %251 %244
OpBranch %233
%233 = OpLabel
%252 = OpLoad %uint %innerCol_0
%253 = OpIAdd %uint %252 %uint_1
OpStore %innerCol_0 %253
OpBranch %231
%232 = OpLabel
OpBranch %223
%223 = OpLabel
%254 = OpLoad %uint %innerRow_0
%255 = OpIAdd %uint %254 %uint_1
OpStore %innerRow_0 %255
OpBranch %221
%222 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %k %uint_0
OpBranch %258
%258 = OpLabel
OpLoopMerge %259 %260 None
OpBranch %261
%261 = OpLabel
%263 = OpLoad %uint %k
%264 = OpULessThan %bool %263 %TileAOuter
%262 = OpLogicalNot %bool %264
OpSelectionMerge %265 None
OpBranchConditional %262 %266 %265
%266 = OpLabel
OpBranch %259
%265 = OpLabel
OpStore %inner %uint_0
OpBranch %268
%268 = OpLabel
OpLoopMerge %269 %270 None
OpBranch %271
%271 = OpLabel
%273 = OpLoad %uint %inner
%274 = OpULessThan %bool %273 %RowPerThread
%272 = OpLogicalNot %bool %274
OpSelectionMerge %275 None
OpBranchConditional %272 %276 %275
%276 = OpLabel
OpBranch %269
%275 = OpLabel
%277 = OpLoad %uint %inner
%278 = OpAccessChain %_ptr_Function_float %BCached %277
%279 = OpLoad %uint %k
%280 = OpLoad %uint %inner
%281 = OpIAdd %uint %133 %280
%282 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %279 %281
%283 = OpLoad %float %282
OpStore %278 %283
OpBranch %270
%270 = OpLabel
%284 = OpLoad %uint %inner
%285 = OpIAdd %uint %284 %uint_1
OpStore %inner %285
OpBranch %268
%269 = OpLabel
OpStore %innerRow_1 %uint_0
OpBranch %287
%287 = OpLabel
OpLoopMerge %288 %289 None
OpBranch %290
%290 = OpLabel
%292 = OpLoad %uint %innerRow_1
%293 = OpULessThan %bool %292 %RowPerThread
%291 = OpLogicalNot %bool %293
OpSelectionMerge %294 None
OpBranchConditional %291 %295 %294
%295 = OpLabel
OpBranch %288
%294 = OpLabel
%296 = OpLoad %uint %innerRow_1
%297 = OpIAdd %uint %131 %296
%298 = OpLoad %uint %k
%299 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %297 %298
%300 = OpLoad %float %299
OpStore %ACached %300
OpStore %innerCol_1 %uint_0
OpBranch %302
%302 = OpLabel
OpLoopMerge %303 %304 None
OpBranch %305
%305 = OpLabel
%307 = OpLoad %uint %innerCol_1
%308 = OpULessThan %bool %307 %RowPerThread
%306 = OpLogicalNot %bool %308
OpSelectionMerge %309 None
OpBranchConditional %306 %310 %309
%310 = OpLabel
OpBranch %303
%309 = OpLabel
%311 = OpLoad %uint %innerRow_1
%312 = OpIMul %uint %311 %RowPerThread
%313 = OpLoad %uint %innerCol_1
%314 = OpIAdd %uint %312 %313
%315 = OpAccessChain %_ptr_Function_float %acc %314
%316 = OpAccessChain %_ptr_Function_float %acc %314
%317 = OpLoad %float %316
%318 = OpLoad %float %ACached
%319 = OpLoad %uint %innerCol_1
%320 = OpAccessChain %_ptr_Function_float %BCached %319
%321 = OpLoad %float %320
%322 = OpFMul %float %318 %321
%323 = OpFAdd %float %317 %322
OpStore %315 %323
OpBranch %304
%304 = OpLabel
%324 = OpLoad %uint %innerCol_1
%325 = OpIAdd %uint %324 %uint_1
OpStore %innerCol_1 %325
OpBranch %302
%303 = OpLabel
OpBranch %289
%289 = OpLabel
%326 = OpLoad %uint %innerRow_1
%327 = OpIAdd %uint %326 %uint_1
OpStore %innerRow_1 %327
OpBranch %287
%288 = OpLabel
OpBranch %260
%260 = OpLabel
%328 = OpLoad %uint %k
%329 = OpIAdd %uint %328 %uint_1
OpStore %k %329
OpBranch %258
%259 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpBranch %178 OpBranch %178
%178 = OpLabel %178 = OpLabel
%331 = OpLoad %uint %t %180 = OpLoad %uint %t
%332 = OpIAdd %uint %331 %uint_1 %181 = OpULessThan %bool %180 %141
OpStore %t %332 %179 = OpLogicalNot %bool %181
OpSelectionMerge %182 None
OpBranchConditional %179 %183 %182
%183 = OpLabel
OpBranch %176 OpBranch %176
%182 = OpLabel
OpStore %innerRow %106
OpBranch %185
%185 = OpLabel
OpLoopMerge %186 %187 None
OpBranch %188
%188 = OpLabel
%190 = OpLoad %uint %innerRow
%191 = OpULessThan %bool %190 %RowPerThread
%189 = OpLogicalNot %bool %191
OpSelectionMerge %192 None
OpBranchConditional %189 %193 %192
%193 = OpLabel
OpBranch %186
%192 = OpLabel
OpStore %innerCol %106
OpBranch %195
%195 = OpLabel
OpLoopMerge %196 %197 None
OpBranch %198
%198 = OpLabel
%200 = OpLoad %uint %innerCol
%201 = OpULessThan %bool %200 %168
%199 = OpLogicalNot %bool %201
OpSelectionMerge %202 None
OpBranchConditional %199 %203 %202
%203 = OpLabel
OpBranch %196
%202 = OpLabel
%204 = OpLoad %uint %innerRow
%205 = OpIAdd %uint %130 %204
%206 = OpLoad %uint %innerCol
%207 = OpIAdd %uint %170 %206
%209 = OpLoad %uint %innerRow
%210 = OpIAdd %uint %134 %209
%211 = OpLoad %uint %t
%212 = OpIMul %uint %211 %TileAOuter
%213 = OpIAdd %uint %212 %207
%208 = OpFunctionCall %float %mm_readA %210 %213
%214 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %205 %207
OpStore %214 %208
OpBranch %197
%197 = OpLabel
%215 = OpLoad %uint %innerCol
%216 = OpIAdd %uint %215 %uint_1
OpStore %innerCol %216
OpBranch %195
%196 = OpLabel
OpBranch %187
%187 = OpLabel
%217 = OpLoad %uint %innerRow
%218 = OpIAdd %uint %217 %uint_1
OpStore %innerRow %218
OpBranch %185
%186 = OpLabel
OpStore %innerRow_0 %106
OpBranch %220
%220 = OpLabel
OpLoopMerge %221 %222 None
OpBranch %223
%223 = OpLabel
%225 = OpLoad %uint %innerRow_0
%226 = OpULessThan %bool %225 %171
%224 = OpLogicalNot %bool %226
OpSelectionMerge %227 None
OpBranchConditional %224 %228 %227
%228 = OpLabel
OpBranch %221
%227 = OpLabel
OpStore %innerCol_0 %106
OpBranch %230
%230 = OpLabel
OpLoopMerge %231 %232 None
OpBranch %233
%233 = OpLabel
%235 = OpLoad %uint %innerCol_0
%236 = OpULessThan %bool %235 %RowPerThread
%234 = OpLogicalNot %bool %236
OpSelectionMerge %237 None
OpBranchConditional %234 %238 %237
%238 = OpLabel
OpBranch %231
%237 = OpLabel
%239 = OpLoad %uint %innerRow_0
%240 = OpIAdd %uint %173 %239
%241 = OpLoad %uint %innerCol_0
%242 = OpIAdd %uint %132 %241
%244 = OpLoad %uint %t
%245 = OpIMul %uint %244 %TileAOuter
%246 = OpIAdd %uint %245 %240
%247 = OpLoad %uint %innerCol_0
%248 = OpIAdd %uint %136 %247
%243 = OpFunctionCall %float %mm_readB %246 %248
%249 = OpLoad %uint %innerCol_0
%250 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %249 %242
OpStore %250 %243
OpBranch %232
%232 = OpLabel
%251 = OpLoad %uint %innerCol_0
%252 = OpIAdd %uint %251 %uint_1
OpStore %innerCol_0 %252
OpBranch %230
%231 = OpLabel
OpBranch %222
%222 = OpLabel
%253 = OpLoad %uint %innerRow_0
%254 = OpIAdd %uint %253 %uint_1
OpStore %innerRow_0 %254
OpBranch %220
%221 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %k %106
OpBranch %257
%257 = OpLabel
OpLoopMerge %258 %259 None
OpBranch %260
%260 = OpLabel
%262 = OpLoad %uint %k
%263 = OpULessThan %bool %262 %TileAOuter
%261 = OpLogicalNot %bool %263
OpSelectionMerge %264 None
OpBranchConditional %261 %265 %264
%265 = OpLabel
OpBranch %258
%264 = OpLabel
OpStore %inner %106
OpBranch %267
%267 = OpLabel
OpLoopMerge %268 %269 None
OpBranch %270
%270 = OpLabel
%272 = OpLoad %uint %inner
%273 = OpULessThan %bool %272 %RowPerThread
%271 = OpLogicalNot %bool %273
OpSelectionMerge %274 None
OpBranchConditional %271 %275 %274
%275 = OpLabel
OpBranch %268
%274 = OpLabel
%276 = OpLoad %uint %inner
%277 = OpAccessChain %_ptr_Function_float %BCached %276
%278 = OpLoad %uint %k
%279 = OpLoad %uint %inner
%280 = OpIAdd %uint %132 %279
%281 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %278 %280
%282 = OpLoad %float %281
OpStore %277 %282
OpBranch %269
%269 = OpLabel
%283 = OpLoad %uint %inner
%284 = OpIAdd %uint %283 %uint_1
OpStore %inner %284
OpBranch %267
%268 = OpLabel
OpStore %innerRow_1 %106
OpBranch %286
%286 = OpLabel
OpLoopMerge %287 %288 None
OpBranch %289
%289 = OpLabel
%291 = OpLoad %uint %innerRow_1
%292 = OpULessThan %bool %291 %RowPerThread
%290 = OpLogicalNot %bool %292
OpSelectionMerge %293 None
OpBranchConditional %290 %294 %293
%294 = OpLabel
OpBranch %287
%293 = OpLabel
%295 = OpLoad %uint %innerRow_1
%296 = OpIAdd %uint %130 %295
%297 = OpLoad %uint %k
%298 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %296 %297
%299 = OpLoad %float %298
OpStore %ACached %299
OpStore %innerCol_1 %106
OpBranch %301
%301 = OpLabel
OpLoopMerge %302 %303 None
OpBranch %304
%304 = OpLabel
%306 = OpLoad %uint %innerCol_1
%307 = OpULessThan %bool %306 %RowPerThread
%305 = OpLogicalNot %bool %307
OpSelectionMerge %308 None
OpBranchConditional %305 %309 %308
%309 = OpLabel
OpBranch %302
%308 = OpLabel
%310 = OpLoad %uint %innerRow_1
%311 = OpIMul %uint %310 %RowPerThread
%312 = OpLoad %uint %innerCol_1
%313 = OpIAdd %uint %311 %312
%314 = OpAccessChain %_ptr_Function_float %acc %313
%315 = OpAccessChain %_ptr_Function_float %acc %313
%316 = OpLoad %float %315
%317 = OpLoad %float %ACached
%318 = OpLoad %uint %innerCol_1
%319 = OpAccessChain %_ptr_Function_float %BCached %318
%320 = OpLoad %float %319
%321 = OpFMul %float %317 %320
%322 = OpFAdd %float %316 %321
OpStore %314 %322
OpBranch %303
%303 = OpLabel
%323 = OpLoad %uint %innerCol_1
%324 = OpIAdd %uint %323 %uint_1
OpStore %innerCol_1 %324
OpBranch %301
%302 = OpLabel
OpBranch %288
%288 = OpLabel
%325 = OpLoad %uint %innerRow_1
%326 = OpIAdd %uint %325 %uint_1
OpStore %innerRow_1 %326
OpBranch %286
%287 = OpLabel
OpBranch %259
%259 = OpLabel
%327 = OpLoad %uint %k
%328 = OpIAdd %uint %327 %uint_1
OpStore %k %328
OpBranch %257
%258 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpBranch %177
%177 = OpLabel %177 = OpLabel
OpStore %innerRow_2 %uint_0 %330 = OpLoad %uint %t
OpBranch %334 %331 = OpIAdd %uint %330 %uint_1
%334 = OpLabel OpStore %t %331
OpLoopMerge %335 %336 None OpBranch %175
OpBranch %337 %176 = OpLabel
%337 = OpLabel OpStore %innerRow_2 %106
%339 = OpLoad %uint %innerRow_2 OpBranch %333
%340 = OpULessThan %bool %339 %RowPerThread %333 = OpLabel
%338 = OpLogicalNot %bool %340 OpLoopMerge %334 %335 None
OpSelectionMerge %341 None
OpBranchConditional %338 %342 %341
%342 = OpLabel
OpBranch %335
%341 = OpLabel
OpStore %innerCol_2 %uint_0
OpBranch %344
%344 = OpLabel
OpLoopMerge %345 %346 None
OpBranch %347
%347 = OpLabel
%349 = OpLoad %uint %innerCol_2
%350 = OpULessThan %bool %349 %RowPerThread
%348 = OpLogicalNot %bool %350
OpSelectionMerge %351 None
OpBranchConditional %348 %352 %351
%352 = OpLabel
OpBranch %345
%351 = OpLabel
%353 = OpLoad %uint %innerRow_2
%354 = OpIMul %uint %353 %RowPerThread
%355 = OpLoad %uint %innerCol_2
%356 = OpIAdd %uint %354 %355
%358 = OpLoad %uint %innerRow_2
%359 = OpIAdd %uint %135 %358
%360 = OpLoad %uint %innerCol_2
%361 = OpIAdd %uint %137 %360
%362 = OpAccessChain %_ptr_Function_float %acc %356
%363 = OpLoad %float %362
%357 = OpFunctionCall %void %mm_write %359 %361 %363
OpBranch %346
%346 = OpLabel
%364 = OpLoad %uint %innerCol_2
%365 = OpIAdd %uint %364 %uint_1
OpStore %innerCol_2 %365
OpBranch %344
%345 = OpLabel
OpBranch %336 OpBranch %336
%336 = OpLabel %336 = OpLabel
%366 = OpLoad %uint %innerRow_2 %338 = OpLoad %uint %innerRow_2
%367 = OpIAdd %uint %366 %uint_1 %339 = OpULessThan %bool %338 %RowPerThread
OpStore %innerRow_2 %367 %337 = OpLogicalNot %bool %339
OpSelectionMerge %340 None
OpBranchConditional %337 %341 %340
%341 = OpLabel
OpBranch %334 OpBranch %334
%340 = OpLabel
OpStore %innerCol_2 %106
OpBranch %343
%343 = OpLabel
OpLoopMerge %344 %345 None
OpBranch %346
%346 = OpLabel
%348 = OpLoad %uint %innerCol_2
%349 = OpULessThan %bool %348 %RowPerThread
%347 = OpLogicalNot %bool %349
OpSelectionMerge %350 None
OpBranchConditional %347 %351 %350
%351 = OpLabel
OpBranch %344
%350 = OpLabel
%352 = OpLoad %uint %innerRow_2
%353 = OpIMul %uint %352 %RowPerThread
%354 = OpLoad %uint %innerCol_2
%355 = OpIAdd %uint %353 %354
%357 = OpLoad %uint %innerRow_2
%358 = OpIAdd %uint %134 %357
%359 = OpLoad %uint %innerCol_2
%360 = OpIAdd %uint %136 %359
%361 = OpAccessChain %_ptr_Function_float %acc %355
%362 = OpLoad %float %361
%356 = OpFunctionCall %void %mm_write %358 %360 %362
OpBranch %345
%345 = OpLabel
%363 = OpLoad %uint %innerCol_2
%364 = OpIAdd %uint %363 %uint_1
OpStore %innerCol_2 %364
OpBranch %343
%344 = OpLabel
OpBranch %335
%335 = OpLabel %335 = OpLabel
%365 = OpLoad %uint %innerRow_2
%366 = OpIAdd %uint %365 %uint_1
OpStore %innerRow_2 %366
OpBranch %333
%334 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %368 %main = OpFunction %void None %367
%370 = OpLabel %369 = OpLabel
%372 = OpLoad %v3uint %local_id_1 %371 = OpLoad %v3uint %local_id_1
%373 = OpLoad %v3uint %global_id_1 %372 = OpLoad %v3uint %global_id_1
%374 = OpLoad %uint %local_invocation_index_1 %373 = OpLoad %uint %local_invocation_index_1
%371 = OpFunctionCall %void %main_inner %372 %373 %374 %370 = OpFunctionCall %void %main_inner %371 %372 %373
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 387 ; Bound: 386
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -219,16 +219,15 @@
%203 = OpTypeFunction %Mat4x4_ %float %203 = OpTypeFunction %Mat4x4_ %float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%float_0 = OpConstant %float 0
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%227 = OpTypeFunction %Mat4x4_ %Mat4x3_ %226 = OpTypeFunction %Mat4x4_ %Mat4x3_
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%245 = OpTypeFunction %Mat4x4_ %Mat4x2_ %244 = OpTypeFunction %Mat4x4_ %Mat4x2_
%259 = OpTypeFunction %Mat4x3_ %float %258 = OpTypeFunction %Mat4x3_ %float
%275 = OpTypeFunction %Mat4x3_ %Mat4x4_ %274 = OpTypeFunction %Mat4x3_ %Mat4x4_
%void = OpTypeVoid %void = OpTypeVoid
%291 = OpTypeFunction %void %290 = OpTypeFunction %void
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%_ptr_Uniform_Mat4x3_ = OpTypePointer Uniform %Mat4x3_ %_ptr_Uniform_Mat4x3_ = OpTypePointer Uniform %Mat4x3_
@ -236,10 +235,10 @@
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%bool = OpTypeBool %bool = OpTypeBool
%int_0 = OpConstant %int 0 %341 = OpConstantNull %int
%_ptr_Uniform_Mat4x2_ = OpTypePointer Uniform %Mat4x2_ %_ptr_Uniform_Mat4x2_ = OpTypePointer Uniform %Mat4x2_
%VertexOutput = OpTypeStruct %v4float %v2float %v4float %VertexOutput = OpTypeStruct %v4float %v2float %v4float
%362 = OpTypeFunction %VertexOutput %v3float %v2float %v4float %v3float %float %361 = OpTypeFunction %VertexOutput %v3float %v2float %v4float %v3float %float
%Mat4x3GetCol0_ = OpFunction %v3float None %54 %Mat4x3GetCol0_ = OpFunction %v3float None %54
%m = OpFunctionParameter %Mat4x3_ %m = OpFunctionParameter %Mat4x3_
%57 = OpLabel %57 = OpLabel
@ -412,211 +411,211 @@
OpStore %n1 %n OpStore %n1 %n
%210 = OpLoad %float %n1 %210 = OpLoad %float %n1
%212 = OpAccessChain %_ptr_Function_v4float %o %uint_0 %212 = OpAccessChain %_ptr_Function_v4float %o %uint_0
%214 = OpCompositeConstruct %v4float %210 %float_0 %float_0 %float_0 %213 = OpCompositeConstruct %v4float %210 %23 %23 %23
OpStore %212 %214 OpStore %212 %213
%215 = OpLoad %float %n1 %214 = OpLoad %float %n1
%216 = OpAccessChain %_ptr_Function_v4float %o %uint_1 %215 = OpAccessChain %_ptr_Function_v4float %o %uint_1
%217 = OpCompositeConstruct %v4float %float_0 %215 %float_0 %float_0 %216 = OpCompositeConstruct %v4float %23 %214 %23 %23
OpStore %216 %217 OpStore %215 %216
%218 = OpLoad %float %n1 %217 = OpLoad %float %n1
%220 = OpAccessChain %_ptr_Function_v4float %o %uint_2 %219 = OpAccessChain %_ptr_Function_v4float %o %uint_2
%221 = OpCompositeConstruct %v4float %float_0 %float_0 %218 %float_0 %220 = OpCompositeConstruct %v4float %23 %23 %217 %23
OpStore %220 %221 OpStore %219 %220
%222 = OpLoad %float %n1 %221 = OpLoad %float %n1
%224 = OpAccessChain %_ptr_Function_v4float %o %uint_3 %223 = OpAccessChain %_ptr_Function_v4float %o %uint_3
%225 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %222 %224 = OpCompositeConstruct %v4float %23 %23 %23 %221
OpStore %224 %225 OpStore %223 %224
%226 = OpLoad %Mat4x4_ %o %225 = OpLoad %Mat4x4_ %o
OpReturnValue %226 OpReturnValue %225
OpFunctionEnd OpFunctionEnd
%x_Mat4x4_1 = OpFunction %Mat4x4_ None %227 %x_Mat4x4_1 = OpFunction %Mat4x4_ None %226
%m16 = OpFunctionParameter %Mat4x3_ %m16 = OpFunctionParameter %Mat4x3_
%230 = OpLabel %229 = OpLabel
%m17 = OpVariable %_ptr_Function_Mat4x3_ Function %60 %m17 = OpVariable %_ptr_Function_Mat4x3_ Function %60
%o1 = OpVariable %_ptr_Function_Mat4x4_ Function %120 %o1 = OpVariable %_ptr_Function_Mat4x4_ Function %120
OpStore %m17 %m16 OpStore %m17 %m16
%233 = OpFunctionCall %Mat4x4_ %x_Mat4x4_ %float_1 %232 = OpFunctionCall %Mat4x4_ %x_Mat4x4_ %float_1
OpStore %o1 %233 OpStore %o1 %232
%235 = OpLoad %Mat4x3_ %m17 %234 = OpLoad %Mat4x3_ %m17
%236 = OpAccessChain %_ptr_Function_v4float %o1 %uint_0 %235 = OpAccessChain %_ptr_Function_v4float %o1 %uint_0
%237 = OpCompositeExtract %v4float %235 0 %236 = OpCompositeExtract %v4float %234 0
OpStore %236 %237 OpStore %235 %236
%238 = OpLoad %Mat4x3_ %m17 %237 = OpLoad %Mat4x3_ %m17
%239 = OpAccessChain %_ptr_Function_v4float %o1 %uint_1 %238 = OpAccessChain %_ptr_Function_v4float %o1 %uint_1
%240 = OpCompositeExtract %v4float %238 1 %239 = OpCompositeExtract %v4float %237 1
OpStore %239 %240 OpStore %238 %239
%241 = OpLoad %Mat4x3_ %m17 %240 = OpLoad %Mat4x3_ %m17
%242 = OpAccessChain %_ptr_Function_v4float %o1 %uint_2 %241 = OpAccessChain %_ptr_Function_v4float %o1 %uint_2
%243 = OpCompositeExtract %v4float %241 2 %242 = OpCompositeExtract %v4float %240 2
OpStore %242 %243 OpStore %241 %242
%244 = OpLoad %Mat4x4_ %o1 %243 = OpLoad %Mat4x4_ %o1
OpReturnValue %244 OpReturnValue %243
OpFunctionEnd OpFunctionEnd
%x_Mat4x4_2 = OpFunction %Mat4x4_ None %245 %x_Mat4x4_2 = OpFunction %Mat4x4_ None %244
%m18 = OpFunctionParameter %Mat4x2_ %m18 = OpFunctionParameter %Mat4x2_
%248 = OpLabel %247 = OpLabel
%m19 = OpVariable %_ptr_Function_Mat4x2_ Function %167 %m19 = OpVariable %_ptr_Function_Mat4x2_ Function %167
%o2 = OpVariable %_ptr_Function_Mat4x4_ Function %120 %o2 = OpVariable %_ptr_Function_Mat4x4_ Function %120
OpStore %m19 %m18 OpStore %m19 %m18
%251 = OpFunctionCall %Mat4x4_ %x_Mat4x4_ %float_1 %250 = OpFunctionCall %Mat4x4_ %x_Mat4x4_ %float_1
OpStore %o2 %251 OpStore %o2 %250
%252 = OpLoad %Mat4x2_ %m19 %251 = OpLoad %Mat4x2_ %m19
%253 = OpAccessChain %_ptr_Function_v4float %o2 %uint_0 %252 = OpAccessChain %_ptr_Function_v4float %o2 %uint_0
%254 = OpCompositeExtract %v4float %252 0 %253 = OpCompositeExtract %v4float %251 0
OpStore %253 %254 OpStore %252 %253
%255 = OpLoad %Mat4x2_ %m19 %254 = OpLoad %Mat4x2_ %m19
%256 = OpAccessChain %_ptr_Function_v4float %o2 %uint_1 %255 = OpAccessChain %_ptr_Function_v4float %o2 %uint_1
%257 = OpCompositeExtract %v4float %255 1 %256 = OpCompositeExtract %v4float %254 1
OpStore %256 %257 OpStore %255 %256
%258 = OpLoad %Mat4x4_ %o2 %257 = OpLoad %Mat4x4_ %o2
OpReturnValue %258 OpReturnValue %257
OpFunctionEnd OpFunctionEnd
%x_Mat4x3_ = OpFunction %Mat4x3_ None %259 %x_Mat4x3_ = OpFunction %Mat4x3_ None %258
%n2 = OpFunctionParameter %float %n2 = OpFunctionParameter %float
%262 = OpLabel %261 = OpLabel
%n3 = OpVariable %_ptr_Function_float Function %23 %n3 = OpVariable %_ptr_Function_float Function %23
%o3 = OpVariable %_ptr_Function_Mat4x3_ Function %60 %o3 = OpVariable %_ptr_Function_Mat4x3_ Function %60
OpStore %n3 %n2 OpStore %n3 %n2
%265 = OpLoad %float %n3 %264 = OpLoad %float %n3
%266 = OpAccessChain %_ptr_Function_v4float %o3 %uint_0 %265 = OpAccessChain %_ptr_Function_v4float %o3 %uint_0
%267 = OpCompositeConstruct %v4float %265 %float_0 %float_0 %float_0 %266 = OpCompositeConstruct %v4float %264 %23 %23 %23
OpStore %266 %267 OpStore %265 %266
%268 = OpLoad %float %n3 %267 = OpLoad %float %n3
%269 = OpAccessChain %_ptr_Function_v4float %o3 %uint_1 %268 = OpAccessChain %_ptr_Function_v4float %o3 %uint_1
%270 = OpCompositeConstruct %v4float %float_0 %268 %float_0 %float_0 %269 = OpCompositeConstruct %v4float %23 %267 %23 %23
OpStore %269 %270 OpStore %268 %269
%271 = OpLoad %float %n3 %270 = OpLoad %float %n3
%272 = OpAccessChain %_ptr_Function_v4float %o3 %uint_2 %271 = OpAccessChain %_ptr_Function_v4float %o3 %uint_2
%273 = OpCompositeConstruct %v4float %float_0 %float_0 %271 %float_0 %272 = OpCompositeConstruct %v4float %23 %23 %270 %23
OpStore %272 %273 OpStore %271 %272
%274 = OpLoad %Mat4x3_ %o3 %273 = OpLoad %Mat4x3_ %o3
OpReturnValue %274 OpReturnValue %273
OpFunctionEnd OpFunctionEnd
%x_Mat4x3_1 = OpFunction %Mat4x3_ None %275 %x_Mat4x3_1 = OpFunction %Mat4x3_ None %274
%m20 = OpFunctionParameter %Mat4x4_ %m20 = OpFunctionParameter %Mat4x4_
%278 = OpLabel %277 = OpLabel
%m21 = OpVariable %_ptr_Function_Mat4x4_ Function %120 %m21 = OpVariable %_ptr_Function_Mat4x4_ Function %120
%o4 = OpVariable %_ptr_Function_Mat4x3_ Function %60 %o4 = OpVariable %_ptr_Function_Mat4x3_ Function %60
OpStore %m21 %m20 OpStore %m21 %m20
%281 = OpLoad %Mat4x4_ %m21 %280 = OpLoad %Mat4x4_ %m21
%282 = OpAccessChain %_ptr_Function_v4float %o4 %uint_0 %281 = OpAccessChain %_ptr_Function_v4float %o4 %uint_0
%283 = OpCompositeExtract %v4float %281 0 %282 = OpCompositeExtract %v4float %280 0
OpStore %282 %283 OpStore %281 %282
%284 = OpLoad %Mat4x4_ %m21 %283 = OpLoad %Mat4x4_ %m21
%285 = OpAccessChain %_ptr_Function_v4float %o4 %uint_1 %284 = OpAccessChain %_ptr_Function_v4float %o4 %uint_1
%286 = OpCompositeExtract %v4float %284 1 %285 = OpCompositeExtract %v4float %283 1
OpStore %285 %286 OpStore %284 %285
%287 = OpLoad %Mat4x4_ %m21 %286 = OpLoad %Mat4x4_ %m21
%288 = OpAccessChain %_ptr_Function_v4float %o4 %uint_2 %287 = OpAccessChain %_ptr_Function_v4float %o4 %uint_2
%289 = OpCompositeExtract %v4float %287 2 %288 = OpCompositeExtract %v4float %286 2
OpStore %288 %289 OpStore %287 %288
%290 = OpLoad %Mat4x3_ %o4 %289 = OpLoad %Mat4x3_ %o4
OpReturnValue %290 OpReturnValue %289
OpFunctionEnd OpFunctionEnd
%main1 = OpFunction %void None %291 %main1 = OpFunction %void None %290
%294 = OpLabel %293 = OpLabel
%t_PosMtx = OpVariable %_ptr_Function_Mat4x3_ Function %60 %t_PosMtx = OpVariable %_ptr_Function_Mat4x3_ Function %60
%t_TexSpaceCoord = OpVariable %_ptr_Function_v2float Function %19 %t_TexSpaceCoord = OpVariable %_ptr_Function_v2float Function %19
%298 = OpLoad %float %a_PosMtxIdx1 %297 = OpLoad %float %a_PosMtxIdx1
%299 = OpConvertFToS %int %298 %298 = OpConvertFToS %int %297
%302 = OpAccessChain %_ptr_Uniform_Mat4x3_ %global2 %uint_0 %299 %301 = OpAccessChain %_ptr_Uniform_Mat4x3_ %global2 %uint_0 %298
%303 = OpLoad %Mat4x3_ %302 %302 = OpLoad %Mat4x3_ %301
OpStore %t_PosMtx %303 OpStore %t_PosMtx %302
%304 = OpLoad %Mat4x3_ %t_PosMtx %303 = OpLoad %Mat4x3_ %t_PosMtx
%305 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %304 %304 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %303
%306 = OpLoad %v3float %a_Position1 %305 = OpLoad %v3float %a_Position1
%307 = OpLoad %Mat4x3_ %t_PosMtx %306 = OpLoad %Mat4x3_ %t_PosMtx
%308 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %307 %307 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %306
%309 = OpLoad %v3float %a_Position1 %308 = OpLoad %v3float %a_Position1
%311 = OpCompositeExtract %float %309 0 %310 = OpCompositeExtract %float %308 0
%312 = OpCompositeExtract %float %309 1 %311 = OpCompositeExtract %float %308 1
%313 = OpCompositeExtract %float %309 2 %312 = OpCompositeExtract %float %308 2
%314 = OpCompositeConstruct %v4float %311 %312 %313 %float_1 %313 = OpCompositeConstruct %v4float %310 %311 %312 %float_1
%310 = OpFunctionCall %v4float %Mul %308 %314 %309 = OpFunctionCall %v4float %Mul %307 %313
%316 = OpAccessChain %_ptr_Uniform_Mat4x4_ %global %uint_0 %315 = OpAccessChain %_ptr_Uniform_Mat4x4_ %global %uint_0
%317 = OpLoad %Mat4x4_ %316 %316 = OpLoad %Mat4x4_ %315
%318 = OpLoad %Mat4x3_ %t_PosMtx %317 = OpLoad %Mat4x3_ %t_PosMtx
%319 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %318 %318 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %317
%320 = OpLoad %v3float %a_Position1 %319 = OpLoad %v3float %a_Position1
%321 = OpLoad %Mat4x3_ %t_PosMtx %320 = OpLoad %Mat4x3_ %t_PosMtx
%322 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %321 %321 = OpFunctionCall %Mat4x4_ %x_Mat4x4_1 %320
%323 = OpLoad %v3float %a_Position1 %322 = OpLoad %v3float %a_Position1
%325 = OpCompositeExtract %float %323 0 %324 = OpCompositeExtract %float %322 0
%326 = OpCompositeExtract %float %323 1 %325 = OpCompositeExtract %float %322 1
%327 = OpCompositeExtract %float %323 2 %326 = OpCompositeExtract %float %322 2
%328 = OpCompositeConstruct %v4float %325 %326 %327 %float_1 %327 = OpCompositeConstruct %v4float %324 %325 %326 %float_1
%324 = OpFunctionCall %v4float %Mul %322 %328 %323 = OpFunctionCall %v4float %Mul %321 %327
%329 = OpFunctionCall %v4float %Mul %317 %324 %328 = OpFunctionCall %v4float %Mul %316 %323
OpStore %gl_Position %329 OpStore %gl_Position %328
%330 = OpLoad %v4float %a_Color1 %329 = OpLoad %v4float %a_Color1
OpStore %v_Color %330 OpStore %v_Color %329
%332 = OpAccessChain %_ptr_Uniform_v4float %global1 %uint_1 %331 = OpAccessChain %_ptr_Uniform_v4float %global1 %uint_1
%333 = OpLoad %v4float %332 %332 = OpLoad %v4float %331
%334 = OpCompositeExtract %float %333 0 %333 = OpCompositeExtract %float %332 0
%336 = OpFOrdEqual %bool %334 %float_2 %335 = OpFOrdEqual %bool %333 %float_2
OpSelectionMerge %338 None OpSelectionMerge %337 None
OpBranchConditional %336 %339 %340 OpBranchConditional %335 %338 %339
%339 = OpLabel
%341 = OpLoad %v3float %a_Normal1
%344 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %int_0
%345 = OpLoad %Mat4x2_ %344
%346 = OpLoad %v3float %a_Normal1
%348 = OpCompositeExtract %float %346 0
%349 = OpCompositeExtract %float %346 1
%350 = OpCompositeExtract %float %346 2
%351 = OpCompositeConstruct %v4float %348 %349 %350 %float_1
%347 = OpFunctionCall %v2float %Mul2 %345 %351
%352 = OpVectorShuffle %v2float %347 %347 0 1
OpStore %v_TexCoord %352
OpReturn
%340 = OpLabel
%353 = OpLoad %v2float %a_UV1
%354 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %int_0
%355 = OpLoad %Mat4x2_ %354
%356 = OpLoad %v2float %a_UV1
%358 = OpCompositeExtract %float %356 0
%359 = OpCompositeExtract %float %356 1
%360 = OpCompositeConstruct %v4float %358 %359 %float_1 %float_1
%357 = OpFunctionCall %v2float %Mul2 %355 %360
%361 = OpVectorShuffle %v2float %357 %357 0 1
OpStore %v_TexCoord %361
OpReturn
%338 = OpLabel %338 = OpLabel
%340 = OpLoad %v3float %a_Normal1
%343 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %341
%344 = OpLoad %Mat4x2_ %343
%345 = OpLoad %v3float %a_Normal1
%347 = OpCompositeExtract %float %345 0
%348 = OpCompositeExtract %float %345 1
%349 = OpCompositeExtract %float %345 2
%350 = OpCompositeConstruct %v4float %347 %348 %349 %float_1
%346 = OpFunctionCall %v2float %Mul2 %344 %350
%351 = OpVectorShuffle %v2float %346 %346 0 1
OpStore %v_TexCoord %351
OpReturn
%339 = OpLabel
%352 = OpLoad %v2float %a_UV1
%353 = OpAccessChain %_ptr_Uniform_Mat4x2_ %global1 %uint_0 %341
%354 = OpLoad %Mat4x2_ %353
%355 = OpLoad %v2float %a_UV1
%357 = OpCompositeExtract %float %355 0
%358 = OpCompositeExtract %float %355 1
%359 = OpCompositeConstruct %v4float %357 %358 %float_1 %float_1
%356 = OpFunctionCall %v2float %Mul2 %354 %359
%360 = OpVectorShuffle %v2float %356 %356 0 1
OpStore %v_TexCoord %360
OpReturn
%337 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %VertexOutput None %362 %main_inner = OpFunction %VertexOutput None %361
%a_Position = OpFunctionParameter %v3float %a_Position = OpFunctionParameter %v3float
%a_UV = OpFunctionParameter %v2float %a_UV = OpFunctionParameter %v2float
%a_Color = OpFunctionParameter %v4float %a_Color = OpFunctionParameter %v4float
%a_Normal = OpFunctionParameter %v3float %a_Normal = OpFunctionParameter %v3float
%a_PosMtxIdx = OpFunctionParameter %float %a_PosMtxIdx = OpFunctionParameter %float
%370 = OpLabel %369 = OpLabel
OpStore %a_Position1 %a_Position OpStore %a_Position1 %a_Position
OpStore %a_UV1 %a_UV OpStore %a_UV1 %a_UV
OpStore %a_Color1 %a_Color OpStore %a_Color1 %a_Color
OpStore %a_Normal1 %a_Normal OpStore %a_Normal1 %a_Normal
OpStore %a_PosMtxIdx1 %a_PosMtxIdx OpStore %a_PosMtxIdx1 %a_PosMtxIdx
%371 = OpFunctionCall %void %main1 %370 = OpFunctionCall %void %main1
%372 = OpLoad %v4float %v_Color %371 = OpLoad %v4float %v_Color
%373 = OpLoad %v2float %v_TexCoord %372 = OpLoad %v2float %v_TexCoord
%374 = OpLoad %v4float %gl_Position %373 = OpLoad %v4float %gl_Position
%375 = OpCompositeConstruct %VertexOutput %372 %373 %374 %374 = OpCompositeConstruct %VertexOutput %371 %372 %373
OpReturnValue %375 OpReturnValue %374
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %291 %main = OpFunction %void None %290
%377 = OpLabel %376 = OpLabel
%379 = OpLoad %v3float %a_Position_1 %378 = OpLoad %v3float %a_Position_1
%380 = OpLoad %v2float %a_UV_1 %379 = OpLoad %v2float %a_UV_1
%381 = OpLoad %v4float %a_Color_1 %380 = OpLoad %v4float %a_Color_1
%382 = OpLoad %v3float %a_Normal_1 %381 = OpLoad %v3float %a_Normal_1
%383 = OpLoad %float %a_PosMtxIdx_1 %382 = OpLoad %float %a_PosMtxIdx_1
%378 = OpFunctionCall %VertexOutput %main_inner %379 %380 %381 %382 %383 %377 = OpFunctionCall %VertexOutput %main_inner %378 %379 %380 %381 %382
%384 = OpCompositeExtract %v4float %378 0 %383 = OpCompositeExtract %v4float %377 0
OpStore %v_Color_1 %384 OpStore %v_Color_1 %383
%385 = OpCompositeExtract %v2float %378 1 %384 = OpCompositeExtract %v2float %377 1
OpStore %v_TexCoord_1 %385 OpStore %v_TexCoord_1 %384
%386 = OpCompositeExtract %v4float %378 2 %385 = OpCompositeExtract %v4float %377 2
OpStore %member_1 %386 OpStore %member_1 %385
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 27 ; Bound: 28
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -27,25 +27,26 @@
%DrawIndirectArgs = OpTypeStruct %uint %DrawIndirectArgs = OpTypeStruct %uint
%_ptr_StorageBuffer_DrawIndirectArgs = OpTypePointer StorageBuffer %DrawIndirectArgs %_ptr_StorageBuffer_DrawIndirectArgs = OpTypePointer StorageBuffer %DrawIndirectArgs
%drawOut = OpVariable %_ptr_StorageBuffer_DrawIndirectArgs StorageBuffer %drawOut = OpVariable %_ptr_StorageBuffer_DrawIndirectArgs StorageBuffer
%uint_0 = OpConstant %uint 0 %8 = OpConstantNull %uint
%_ptr_Private_uint = OpTypePointer Private %uint %_ptr_Private_uint = OpTypePointer Private %uint
%cubeVerts = OpVariable %_ptr_Private_uint Private %uint_0 %cubeVerts = OpVariable %_ptr_Private_uint Private %8
%void = OpTypeVoid %void = OpTypeVoid
%11 = OpTypeFunction %void %v3uint %11 = OpTypeFunction %void %v3uint
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%22 = OpTypeFunction %void %23 = OpTypeFunction %void
%computeMain_inner = OpFunction %void None %11 %computeMain_inner = OpFunction %void None %11
%global_id = OpFunctionParameter %v3uint %global_id = OpFunctionParameter %v3uint
%15 = OpLabel %15 = OpLabel
%20 = OpAccessChain %_ptr_StorageBuffer_uint %drawOut %uint_0 %21 = OpAccessChain %_ptr_StorageBuffer_uint %drawOut %uint_0
%21 = OpLoad %uint %cubeVerts %22 = OpLoad %uint %cubeVerts
%16 = OpAtomicIAdd %uint %20 %uint_1 %uint_0 %21 %16 = OpAtomicIAdd %uint %21 %uint_1 %uint_0 %22
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%computeMain = OpFunction %void None %22 %computeMain = OpFunction %void None %23
%24 = OpLabel %25 = OpLabel
%26 = OpLoad %v3uint %global_id_1 %27 = OpLoad %v3uint %global_id_1
%25 = OpFunctionCall %void %computeMain_inner %26 %26 = OpFunctionCall %void %computeMain_inner %27
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 259 ; Bound: 258
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpCapability ImageQuery OpCapability ImageQuery
@ -106,7 +106,7 @@
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2 %v2int = OpTypeVector %int 2
%int_0 = OpConstant %int 0 %76 = OpConstantNull %int
%v2uint = OpTypeVector %uint 2 %v2uint = OpTypeVector %uint 2
%85 = OpConstantComposite %v2uint %uint_4 %uint_1 %85 = OpConstantComposite %v2uint %uint_4 %uint_1
%_ptr_Function_v2int = OpTypePointer Function %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int
@ -116,12 +116,11 @@
%v2float = OpTypeVector %float 2 %v2float = OpTypeVector %float 2
%float_0_25 = OpConstant %float 0.25 %float_0_25 = OpConstant %float 0.25
%143 = OpConstantComposite %v2float %float_0_25 %float_0_25 %143 = OpConstantComposite %v2float %float_0_25 %float_0_25
%float_0 = OpConstant %float 0 %147 = OpConstantNull %float
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%207 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%252 = OpTypeFunction %void %251 = OpTypeFunction %void
%main_inner = OpFunction %void None %31 %main_inner = OpFunction %void None %31
%WorkGroupID = OpFunctionParameter %v3uint %WorkGroupID = OpFunctionParameter %v3uint
%LocalInvocationID = OpFunctionParameter %v3uint %LocalInvocationID = OpFunctionParameter %v3uint
@ -170,7 +169,7 @@
%70 = OpISub %uint %68 %uint_1 %70 = OpISub %uint %68 %uint_1
%71 = OpUDiv %uint %70 %uint_2 %71 = OpUDiv %uint %70 %uint_2
%75 = OpLoad %16 %inputTex %75 = OpLoad %16 %inputTex
%72 = OpImageQuerySizeLod %v2int %75 %int_0 %72 = OpImageQuerySizeLod %v2int %75 %76
%79 = OpVectorShuffle %v2uint %WorkGroupID %WorkGroupID 0 1 %79 = OpVectorShuffle %v2uint %WorkGroupID %WorkGroupID 0 1
%80 = OpAccessChain %_ptr_Uniform_uint %params %uint_1 %80 = OpAccessChain %_ptr_Uniform_uint %params %uint_1
%81 = OpLoad %uint %80 %81 = OpLoad %uint %80
@ -181,9 +180,9 @@
%87 = OpIAdd %v2uint %83 %86 %87 = OpIAdd %v2uint %83 %86
%77 = OpBitcast %v2int %87 %77 = OpBitcast %v2int %87
%88 = OpBitcast %int %71 %88 = OpBitcast %int %71
%89 = OpCompositeConstruct %v2int %88 %int_0 %89 = OpCompositeConstruct %v2int %88 %76
%90 = OpISub %v2int %77 %89 %90 = OpISub %v2int %77 %89
OpStore %r %uint_0 OpStore %r %40
OpBranch %92 OpBranch %92
%92 = OpLabel %92 = OpLabel
OpLoopMerge %93 %94 None OpLoopMerge %93 %94 None
@ -197,7 +196,7 @@
%100 = OpLabel %100 = OpLabel
OpBranch %93 OpBranch %93
%99 = OpLabel %99 = OpLabel
OpStore %c %uint_0 OpStore %c %40
OpBranch %102 OpBranch %102
%102 = OpLabel %102 = OpLabel
OpLoopMerge %103 %104 None OpLoopMerge %103 %104 None
@ -220,7 +219,7 @@
OpStore %loadIndex %116 OpStore %loadIndex %116
%120 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0 %120 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
%121 = OpLoad %uint %120 %121 = OpLoad %uint %120
%122 = OpINotEqual %bool %121 %uint_0 %122 = OpINotEqual %bool %121 %40
OpSelectionMerge %123 None OpSelectionMerge %123 None
OpBranchConditional %122 %124 %123 OpBranchConditional %122 %124 %123
%124 = OpLabel %124 = OpLabel
@ -243,7 +242,7 @@
%144 = OpFAdd %v2float %139 %143 %144 = OpFAdd %v2float %139 %143
%145 = OpConvertSToF %v2float %72 %145 = OpConvertSToF %v2float %72
%146 = OpFDiv %v2float %144 %145 %146 = OpFDiv %v2float %144 %145
%133 = OpImageSampleExplicitLod %v4float %138 %146 Lod %float_0 %133 = OpImageSampleExplicitLod %v4float %138 %146 Lod %147
%148 = OpVectorShuffle %v3float %133 %133 0 1 2 %148 = OpVectorShuffle %v3float %133 %133 0 1 2
OpStore %132 %148 OpStore %132 %148
OpBranch %104 OpBranch %104
@ -261,7 +260,7 @@
OpBranch %92 OpBranch %92
%93 = OpLabel %93 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264 OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %r_0 %uint_0 OpStore %r_0 %40
OpBranch %155 OpBranch %155
%155 = OpLabel %155 = OpLabel
OpLoopMerge %156 %157 None OpLoopMerge %156 %157 None
@ -275,7 +274,7 @@
%163 = OpLabel %163 = OpLabel
OpBranch %156 OpBranch %156
%162 = OpLabel %162 = OpLabel
OpStore %c_0 %uint_0 OpStore %c_0 %40
OpBranch %165 OpBranch %165
%165 = OpLabel %165 = OpLabel
OpLoopMerge %166 %167 None OpLoopMerge %166 %167 None
@ -298,7 +297,7 @@
OpStore %writeIndex %179 OpStore %writeIndex %179
%181 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0 %181 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
%182 = OpLoad %uint %181 %182 = OpLoad %uint %181
%183 = OpINotEqual %bool %182 %uint_0 %183 = OpINotEqual %bool %182 %40
OpSelectionMerge %184 None OpSelectionMerge %184 None
OpBranchConditional %183 %185 %184 OpBranchConditional %183 %185 %184
%185 = OpLabel %185 = OpLabel
@ -332,77 +331,77 @@
OpSelectionMerge %205 None OpSelectionMerge %205 None
OpBranchConditional %204 %206 %205 OpBranchConditional %204 %206 %205
%206 = OpLabel %206 = OpLabel
OpStore %acc %207 OpStore %acc %58
OpStore %f %uint_0 OpStore %f %40
OpBranch %211 OpBranch %210
%211 = OpLabel %210 = OpLabel
OpLoopMerge %212 %213 None OpLoopMerge %211 %212 None
OpBranch %214
%214 = OpLabel
%216 = OpLoad %uint %f
%217 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
%218 = OpLoad %uint %217
%219 = OpULessThan %bool %216 %218
%215 = OpLogicalNot %bool %219
OpSelectionMerge %220 None
OpBranchConditional %215 %221 %220
%221 = OpLabel
OpBranch %212
%220 = OpLabel
%222 = OpLoad %uint %f
%223 = OpIAdd %uint %191 %222
%224 = OpISub %uint %223 %71
OpStore %i %224
%226 = OpLoad %v3float %acc
%229 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
%230 = OpLoad %uint %229
%228 = OpConvertUToF %float %230
%231 = OpFDiv %float %float_1 %228
%232 = OpLoad %uint %r_0
%233 = OpLoad %uint %i
%234 = OpAccessChain %_ptr_Workgroup_v3float %tile %232 %233
%235 = OpLoad %v3float %234
%236 = OpVectorTimesScalar %v3float %235 %231
%237 = OpFAdd %v3float %226 %236
OpStore %acc %237
OpBranch %213 OpBranch %213
%213 = OpLabel %213 = OpLabel
%238 = OpLoad %uint %f %215 = OpLoad %uint %f
%239 = OpIAdd %uint %238 %uint_1 %216 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
OpStore %f %239 %217 = OpLoad %uint %216
%218 = OpULessThan %bool %215 %217
%214 = OpLogicalNot %bool %218
OpSelectionMerge %219 None
OpBranchConditional %214 %220 %219
%220 = OpLabel
OpBranch %211 OpBranch %211
%219 = OpLabel
%221 = OpLoad %uint %f
%222 = OpIAdd %uint %191 %221
%223 = OpISub %uint %222 %71
OpStore %i %223
%225 = OpLoad %v3float %acc
%228 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
%229 = OpLoad %uint %228
%227 = OpConvertUToF %float %229
%230 = OpFDiv %float %float_1 %227
%231 = OpLoad %uint %r_0
%232 = OpLoad %uint %i
%233 = OpAccessChain %_ptr_Workgroup_v3float %tile %231 %232
%234 = OpLoad %v3float %233
%235 = OpVectorTimesScalar %v3float %234 %230
%236 = OpFAdd %v3float %225 %235
OpStore %acc %236
OpBranch %212
%212 = OpLabel %212 = OpLabel
%241 = OpLoad %20 %outputTex %237 = OpLoad %uint %f
%242 = OpLoad %v2int %writeIndex %238 = OpIAdd %uint %237 %uint_1
%243 = OpLoad %v3float %acc OpStore %f %238
%244 = OpCompositeExtract %float %243 0 OpBranch %210
%245 = OpCompositeExtract %float %243 1 %211 = OpLabel
%246 = OpCompositeExtract %float %243 2 %240 = OpLoad %20 %outputTex
%247 = OpCompositeConstruct %v4float %244 %245 %246 %float_1 %241 = OpLoad %v2int %writeIndex
OpImageWrite %241 %242 %247 %242 = OpLoad %v3float %acc
%243 = OpCompositeExtract %float %242 0
%244 = OpCompositeExtract %float %242 1
%245 = OpCompositeExtract %float %242 2
%246 = OpCompositeConstruct %v4float %243 %244 %245 %float_1
OpImageWrite %240 %241 %246
OpBranch %205 OpBranch %205
%205 = OpLabel %205 = OpLabel
OpBranch %167 OpBranch %167
%167 = OpLabel %167 = OpLabel
%248 = OpLoad %uint %c_0 %247 = OpLoad %uint %c_0
%249 = OpIAdd %uint %248 %uint_1 %248 = OpIAdd %uint %247 %uint_1
OpStore %c_0 %249 OpStore %c_0 %248
OpBranch %165 OpBranch %165
%166 = OpLabel %166 = OpLabel
OpBranch %157 OpBranch %157
%157 = OpLabel %157 = OpLabel
%250 = OpLoad %uint %r_0 %249 = OpLoad %uint %r_0
%251 = OpIAdd %uint %250 %uint_1 %250 = OpIAdd %uint %249 %uint_1
OpStore %r_0 %251 OpStore %r_0 %250
OpBranch %155 OpBranch %155
%156 = OpLabel %156 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %252 %main = OpFunction %void None %251
%254 = OpLabel %253 = OpLabel
%256 = OpLoad %v3uint %WorkGroupID_1 %255 = OpLoad %v3uint %WorkGroupID_1
%257 = OpLoad %v3uint %LocalInvocationID_1 %256 = OpLoad %v3uint %LocalInvocationID_1
%258 = OpLoad %uint %local_invocation_index_1 %257 = OpLoad %uint %local_invocation_index_1
%255 = OpFunctionCall %void %main_inner %256 %257 %258 %254 = OpFunctionCall %void %main_inner %255 %256 %257
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

File diff suppressed because it is too large Load Diff

View File

@ -13,10 +13,10 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 386 ; Bound: 383
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%138 = OpExtInstImport "GLSL.std.450" %136 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %tUV_param_1 %tileID_1_param_1 %levelUnits_param_1 %stageUnits_1_param_1 %vPosition_param_1 %vUV_param_1 %glFragColor_1_1 OpEntryPoint Fragment %main "main" %tUV_param_1 %tileID_1_param_1 %levelUnits_param_1 %stageUnits_1_param_1 %vPosition_param_1 %vUV_param_1 %glFragColor_1_1
OpExecutionMode %main OriginUpperLeft OpExecutionMode %main OriginUpperLeft
@ -181,30 +181,27 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m
%uint_7 = OpConstant %uint 7 %uint_7 = OpConstant %uint 7
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%66 = OpTypeSampledImage %23 %66 = OpTypeSampledImage %23
%float_0 = OpConstant %float 0
%float_0_25 = OpConstant %float 0.25 %float_0_25 = OpConstant %float 0.25
%float_0_5 = OpConstant %float 0.5 %float_0_5 = OpConstant %float 0.5
%99 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%void = OpTypeVoid %void = OpTypeVoid
%106 = OpTypeFunction %void %104 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%121 = OpConstantNull %int %119 = OpConstantNull %int
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float %_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%127 = OpConstantNull %mat4v4float %125 = OpConstantNull %mat4v4float
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%uint_5 = OpConstant %uint 5 %uint_5 = OpConstant %uint 5
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%151 = OpConstantComposite %v2float %float_1 %float_1 %149 = OpConstantComposite %v2float %float_1 %float_1
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%int_0 = OpConstant %int 0
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%bool = OpTypeBool %bool = OpTypeBool
%184 = OpConstantComposite %v2float %float_0_5 %float_0_5 %181 = OpConstantComposite %v2float %float_0_5 %float_0_5
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%float_8 = OpConstant %float 8 %float_8 = OpConstant %float 8
@ -214,7 +211,7 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%main_out = OpTypeStruct %v4float %main_out = OpTypeStruct %v4float
%363 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float %360 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float
%getFrameData_f1_ = OpFunction %mat4v4float None %49 %getFrameData_f1_ = OpFunction %mat4v4float None %49
%frameID = OpFunctionParameter %_ptr_Function_float %frameID = OpFunctionParameter %_ptr_Function_float
%53 = OpLabel %53 = OpLabel
@ -228,56 +225,56 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m
%64 = OpLoad %26 %frameMapSampler %64 = OpLoad %26 %frameMapSampler
%65 = OpLoad %23 %frameMapTexture %65 = OpLoad %23 %frameMapTexture
%67 = OpSampledImage %66 %65 %64 %67 = OpSampledImage %66 %65 %64
%69 = OpCompositeConstruct %v2float %62 %float_0 %68 = OpCompositeConstruct %v2float %62 %37
%63 = OpImageSampleImplicitLod %v4float %67 %69 Bias %float_0 %63 = OpImageSampleImplicitLod %v4float %67 %68 Bias %37
%70 = OpLoad %float %fX %69 = OpLoad %float %fX
%72 = OpLoad %26 %frameMapSampler %71 = OpLoad %26 %frameMapSampler
%73 = OpLoad %23 %frameMapTexture %72 = OpLoad %23 %frameMapTexture
%74 = OpSampledImage %66 %73 %72 %73 = OpSampledImage %66 %72 %71
%76 = OpCompositeConstruct %v2float %70 %float_0_25 %75 = OpCompositeConstruct %v2float %69 %float_0_25
%71 = OpImageSampleImplicitLod %v4float %74 %76 Bias %float_0 %70 = OpImageSampleImplicitLod %v4float %73 %75 Bias %37
%77 = OpLoad %float %fX %76 = OpLoad %float %fX
%79 = OpLoad %26 %frameMapSampler %78 = OpLoad %26 %frameMapSampler
%80 = OpLoad %23 %frameMapTexture %79 = OpLoad %23 %frameMapTexture
%81 = OpSampledImage %66 %80 %79 %80 = OpSampledImage %66 %79 %78
%83 = OpCompositeConstruct %v2float %77 %float_0_5 %82 = OpCompositeConstruct %v2float %76 %float_0_5
%78 = OpImageSampleImplicitLod %v4float %81 %83 Bias %float_0 %77 = OpImageSampleImplicitLod %v4float %80 %82 Bias %37
%84 = OpCompositeExtract %float %63 0 %83 = OpCompositeExtract %float %63 0
%85 = OpCompositeExtract %float %63 1 %84 = OpCompositeExtract %float %63 1
%86 = OpCompositeExtract %float %63 2 %85 = OpCompositeExtract %float %63 2
%87 = OpCompositeExtract %float %63 3 %86 = OpCompositeExtract %float %63 3
%88 = OpCompositeConstruct %v4float %84 %85 %86 %87 %87 = OpCompositeConstruct %v4float %83 %84 %85 %86
%89 = OpCompositeExtract %float %71 0 %88 = OpCompositeExtract %float %70 0
%90 = OpCompositeExtract %float %71 1 %89 = OpCompositeExtract %float %70 1
%91 = OpCompositeExtract %float %71 2 %90 = OpCompositeExtract %float %70 2
%92 = OpCompositeExtract %float %71 3 %91 = OpCompositeExtract %float %70 3
%93 = OpCompositeConstruct %v4float %89 %90 %91 %92 %92 = OpCompositeConstruct %v4float %88 %89 %90 %91
%94 = OpCompositeExtract %float %78 0 %93 = OpCompositeExtract %float %77 0
%95 = OpCompositeExtract %float %78 1 %94 = OpCompositeExtract %float %77 1
%96 = OpCompositeExtract %float %78 2 %95 = OpCompositeExtract %float %77 2
%97 = OpCompositeExtract %float %78 3 %96 = OpCompositeExtract %float %77 3
%98 = OpCompositeConstruct %v4float %94 %95 %96 %97 %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
%100 = OpCompositeExtract %float %99 0 %98 = OpCompositeExtract %float %15 0
%101 = OpCompositeExtract %float %99 1 %99 = OpCompositeExtract %float %15 1
%102 = OpCompositeExtract %float %99 2 %100 = OpCompositeExtract %float %15 2
%103 = OpCompositeExtract %float %99 3 %101 = OpCompositeExtract %float %15 3
%104 = OpCompositeConstruct %v4float %100 %101 %102 %103 %102 = OpCompositeConstruct %v4float %98 %99 %100 %101
%105 = OpCompositeConstruct %mat4v4float %88 %93 %98 %104 %103 = OpCompositeConstruct %mat4v4float %87 %92 %97 %102
OpReturnValue %105 OpReturnValue %103
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %106 %main_1 = OpFunction %void None %104
%109 = OpLabel %107 = OpLabel
%color = OpVariable %_ptr_Function_v4float Function %15 %color = OpVariable %_ptr_Function_v4float Function %15
%tileUV = OpVariable %_ptr_Function_v2float Function %29 %tileUV = OpVariable %_ptr_Function_v2float Function %29
%tileID = OpVariable %_ptr_Function_v2float Function %29 %tileID = OpVariable %_ptr_Function_v2float Function %29
%sheetUnits = OpVariable %_ptr_Function_v2float Function %29 %sheetUnits = OpVariable %_ptr_Function_v2float Function %29
%spriteUnits = OpVariable %_ptr_Function_float Function %37 %spriteUnits = OpVariable %_ptr_Function_float Function %37
%stageUnits = OpVariable %_ptr_Function_v2float Function %29 %stageUnits = OpVariable %_ptr_Function_v2float Function %29
%i = OpVariable %_ptr_Function_int Function %121 %i = OpVariable %_ptr_Function_int Function %119
%frameID_1 = OpVariable %_ptr_Function_float Function %37 %frameID_1 = OpVariable %_ptr_Function_float Function %37
%animationData = OpVariable %_ptr_Function_v4float Function %15 %animationData = OpVariable %_ptr_Function_v4float Function %15
%f = OpVariable %_ptr_Function_float Function %37 %f = OpVariable %_ptr_Function_float Function %37
%frameData = OpVariable %_ptr_Function_mat4v4float Function %127 %frameData = OpVariable %_ptr_Function_mat4v4float Function %125
%param = OpVariable %_ptr_Function_float Function %37 %param = OpVariable %_ptr_Function_float Function %37
%frameSize = OpVariable %_ptr_Function_v2float Function %29 %frameSize = OpVariable %_ptr_Function_v2float Function %29
%offset_1 = OpVariable %_ptr_Function_v2float Function %29 %offset_1 = OpVariable %_ptr_Function_v2float Function %29
@ -285,310 +282,310 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m
%nc = OpVariable %_ptr_Function_v4float Function %15 %nc = OpVariable %_ptr_Function_v4float Function %15
%alpha = OpVariable %_ptr_Function_float Function %37 %alpha = OpVariable %_ptr_Function_float Function %37
%mixed = OpVariable %_ptr_Function_v3float Function %47 %mixed = OpVariable %_ptr_Function_v3float Function %47
OpStore %color %99 OpStore %color %15
%136 = OpLoad %v2float %tUV %134 = OpLoad %v2float %tUV
%137 = OpExtInst %v2float %138 Fract %136 %135 = OpExtInst %v2float %136 Fract %134
OpStore %tileUV %137 OpStore %tileUV %135
%138 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%139 = OpLoad %float %138
%140 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 %140 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%141 = OpLoad %float %140 %142 = OpFSub %float %float_1 %139
%142 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 OpStore %140 %142
%144 = OpFSub %float %float_1 %141 %143 = OpLoad %v2float %tUV
OpStore %142 %144 %144 = OpExtInst %v2float %136 Floor %143
%145 = OpLoad %v2float %tUV OpStore %tileID %144
%146 = OpExtInst %v2float %138 Floor %145 %147 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
OpStore %tileID %146 %148 = OpLoad %v2float %147
%149 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 %150 = OpFDiv %v2float %149 %148
%150 = OpLoad %v2float %149 OpStore %sheetUnits %150
%152 = OpFDiv %v2float %151 %150 %151 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
OpStore %sheetUnits %152 %152 = OpLoad %float %151
%153 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 %153 = OpFDiv %float %float_1 %152
%154 = OpLoad %float %153 OpStore %spriteUnits %153
%155 = OpFDiv %float %float_1 %154 %155 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
OpStore %spriteUnits %155 %156 = OpLoad %v2float %155
%157 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 %157 = OpFDiv %v2float %149 %156
%158 = OpLoad %v2float %157 OpStore %stageUnits %157
%159 = OpFDiv %v2float %151 %158 OpStore %i %119
OpStore %stageUnits %159 OpBranch %158
OpStore %i %int_0 %158 = OpLabel
OpLoopMerge %159 %160 None
OpBranch %161 OpBranch %161
%161 = OpLabel %161 = OpLabel
OpLoopMerge %162 %163 None %162 = OpLoad %int %i
OpBranch %164 %164 = OpSLessThan %bool %162 %int_2
%164 = OpLabel OpSelectionMerge %166 None
%165 = OpLoad %int %i OpBranchConditional %164 %167 %168
%167 = OpSLessThan %bool %165 %int_2 %167 = OpLabel
OpSelectionMerge %169 None OpBranch %166
OpBranchConditional %167 %170 %171 %168 = OpLabel
%170 = OpLabel OpBranch %159
OpBranch %169 %166 = OpLabel
%171 = OpLabel %169 = OpLoad %int %i
OpBranch %162 OpSelectionMerge %170 None
%169 = OpLabel OpSwitch %169 %171 1 %172 0 %173
%172 = OpLoad %int %i %172 = OpLabel
OpSelectionMerge %173 None %174 = OpLoad %v2float %tileID
OpSwitch %172 %174 1 %175 0 %176 %175 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%175 = OpLabel %176 = OpLoad %v2float %175
%177 = OpLoad %v2float %tileID %178 = OpLoad %26 %tileMapsSampler
%178 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 %179 = OpLoad %23 %tileMapsTexture1
%179 = OpLoad %v2float %178 %180 = OpSampledImage %66 %179 %178
%181 = OpLoad %26 %tileMapsSampler %182 = OpFAdd %v2float %174 %181
%182 = OpLoad %23 %tileMapsTexture1 %183 = OpFDiv %v2float %182 %176
%183 = OpSampledImage %66 %182 %181 %177 = OpImageSampleImplicitLod %v4float %180 %183 Bias %37
%185 = OpFAdd %v2float %177 %184 %184 = OpCompositeExtract %float %177 0
%186 = OpFDiv %v2float %185 %179 OpStore %frameID_1 %184
%180 = OpImageSampleImplicitLod %v4float %183 %186 Bias %float_0 OpBranch %170
%187 = OpCompositeExtract %float %180 0
OpStore %frameID_1 %187
OpBranch %173
%176 = OpLabel
%188 = OpLoad %v2float %tileID
%189 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%190 = OpLoad %v2float %189
%192 = OpLoad %26 %tileMapsSampler
%193 = OpLoad %23 %tileMapsTexture0
%194 = OpSampledImage %66 %193 %192
%195 = OpFAdd %v2float %188 %184
%196 = OpFDiv %v2float %195 %190
%191 = OpImageSampleImplicitLod %v4float %194 %196 Bias %float_0
%197 = OpCompositeExtract %float %191 0
OpStore %frameID_1 %197
OpBranch %173
%174 = OpLabel
OpBranch %173
%173 = OpLabel %173 = OpLabel
%198 = OpLoad %float %frameID_1 %185 = OpLoad %v2float %tileID
%199 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 %186 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%200 = OpLoad %float %199 %187 = OpLoad %v2float %186
%202 = OpLoad %26 %animationMapSampler %189 = OpLoad %26 %tileMapsSampler
%203 = OpLoad %23 %animationMapTexture %190 = OpLoad %23 %tileMapsTexture0
%204 = OpSampledImage %66 %203 %202 %191 = OpSampledImage %66 %190 %189
%205 = OpFAdd %float %198 %float_0_5 %192 = OpFAdd %v2float %185 %181
%206 = OpFDiv %float %205 %200 %193 = OpFDiv %v2float %192 %187
%207 = OpCompositeConstruct %v2float %206 %float_0 %188 = OpImageSampleImplicitLod %v4float %191 %193 Bias %37
%201 = OpImageSampleImplicitLod %v4float %204 %207 Bias %float_0 %194 = OpCompositeExtract %float %188 0
OpStore %animationData %201 OpStore %frameID_1 %194
%208 = OpAccessChain %_ptr_Function_float %animationData %uint_1 OpBranch %170
%209 = OpLoad %float %208 %171 = OpLabel
%210 = OpFOrdGreaterThan %bool %209 %float_0 OpBranch %170
OpSelectionMerge %211 None %170 = OpLabel
OpBranchConditional %210 %212 %211 %195 = OpLoad %float %frameID_1
%212 = OpLabel %196 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%214 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 %197 = OpLoad %float %196
%199 = OpLoad %26 %animationMapSampler
%200 = OpLoad %23 %animationMapTexture
%201 = OpSampledImage %66 %200 %199
%202 = OpFAdd %float %195 %float_0_5
%203 = OpFDiv %float %202 %197
%204 = OpCompositeConstruct %v2float %203 %37
%198 = OpImageSampleImplicitLod %v4float %201 %204 Bias %37
OpStore %animationData %198
%205 = OpAccessChain %_ptr_Function_float %animationData %uint_1
%206 = OpLoad %float %205
%207 = OpFOrdGreaterThan %bool %206 %37
OpSelectionMerge %208 None
OpBranchConditional %207 %209 %208
%209 = OpLabel
%211 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0
%212 = OpLoad %float %211
%214 = OpAccessChain %_ptr_Function_float %animationData %uint_2
%215 = OpLoad %float %214 %215 = OpLoad %float %214
%217 = OpAccessChain %_ptr_Function_float %animationData %uint_2 %216 = OpFMul %float %212 %215
%218 = OpLoad %float %217 %217 = OpFRem %float %216 %float_1
%219 = OpFMul %float %215 %218 OpStore %mt %217
%220 = OpFRem %float %219 %float_1 OpStore %f %37
OpStore %mt %220 OpBranch %218
OpStore %f %float_0 %218 = OpLabel
OpLoopMerge %219 %220 None
OpBranch %221 OpBranch %221
%221 = OpLabel %221 = OpLabel
OpLoopMerge %222 %223 None %222 = OpLoad %float %f
OpBranch %224 %224 = OpFOrdLessThan %bool %222 %float_8
%224 = OpLabel OpSelectionMerge %225 None
%225 = OpLoad %float %f OpBranchConditional %224 %226 %227
%227 = OpFOrdLessThan %bool %225 %float_8 %226 = OpLabel
OpSelectionMerge %228 None OpBranch %225
OpBranchConditional %227 %229 %230 %227 = OpLabel
%229 = OpLabel OpBranch %219
OpBranch %228 %225 = OpLabel
%230 = OpLabel %228 = OpAccessChain %_ptr_Function_float %animationData %uint_1
OpBranch %222 %229 = OpLoad %float %228
%228 = OpLabel %230 = OpLoad %float %mt
%231 = OpAccessChain %_ptr_Function_float %animationData %uint_1 %231 = OpFOrdGreaterThan %bool %229 %230
%232 = OpLoad %float %231 OpSelectionMerge %232 None
%233 = OpLoad %float %mt OpBranchConditional %231 %233 %232
%234 = OpFOrdGreaterThan %bool %232 %233 %233 = OpLabel
OpSelectionMerge %235 None %234 = OpAccessChain %_ptr_Function_float %animationData %uint_0
OpBranchConditional %234 %236 %235 %235 = OpLoad %float %234
%236 = OpLabel OpStore %frameID_1 %235
%237 = OpAccessChain %_ptr_Function_float %animationData %uint_0 OpBranch %219
%232 = OpLabel
%236 = OpLoad %float %frameID_1
%237 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%238 = OpLoad %float %237 %238 = OpLoad %float %237
OpStore %frameID_1 %238 %239 = OpLoad %float %f
OpBranch %222 %241 = OpLoad %26 %animationMapSampler
%235 = OpLabel %242 = OpLoad %23 %animationMapTexture
%239 = OpLoad %float %frameID_1 %243 = OpSampledImage %66 %242 %241
%240 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 %244 = OpFAdd %float %236 %float_0_5
%241 = OpLoad %float %240 %245 = OpFDiv %float %244 %238
%242 = OpLoad %float %f %247 = OpFMul %float %float_0_125 %239
%244 = OpLoad %26 %animationMapSampler %248 = OpCompositeConstruct %v2float %245 %247
%245 = OpLoad %23 %animationMapTexture %240 = OpImageSampleImplicitLod %v4float %243 %248 Bias %37
%246 = OpSampledImage %66 %245 %244 OpStore %animationData %240
%247 = OpFAdd %float %239 %float_0_5 OpBranch %220
%248 = OpFDiv %float %247 %241 %220 = OpLabel
%250 = OpFMul %float %float_0_125 %242 %249 = OpLoad %float %f
%251 = OpCompositeConstruct %v2float %248 %250 %250 = OpFAdd %float %249 %float_1
%243 = OpImageSampleImplicitLod %v4float %246 %251 Bias %float_0 OpStore %f %250
OpStore %animationData %243 OpBranch %218
OpBranch %223 %219 = OpLabel
%223 = OpLabel OpBranch %208
%252 = OpLoad %float %f %208 = OpLabel
%253 = OpFAdd %float %252 %float_1 %251 = OpLoad %float %frameID_1
OpStore %f %253 %252 = OpFAdd %float %251 %float_0_5
OpBranch %221 OpStore %param %252
%222 = OpLabel %253 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param
OpBranch %211 OpStore %frameData %253
%211 = OpLabel %255 = OpAccessChain %_ptr_Function_v4float %frameData %119
%254 = OpLoad %float %frameID_1 %256 = OpLoad %v4float %255
%255 = OpFAdd %float %254 %float_0_5 %257 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
OpStore %param %255 %258 = OpLoad %v2float %257
%256 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param %259 = OpCompositeExtract %float %256 3
OpStore %frameData %256 %260 = OpCompositeExtract %float %256 2
%258 = OpAccessChain %_ptr_Function_v4float %frameData %int_0 %261 = OpCompositeConstruct %v2float %259 %260
%259 = OpLoad %v4float %258 %262 = OpFDiv %v2float %261 %258
%260 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 OpStore %frameSize %262
%261 = OpLoad %v2float %260 %263 = OpAccessChain %_ptr_Function_v4float %frameData %119
%262 = OpCompositeExtract %float %259 3 %264 = OpLoad %v4float %263
%263 = OpCompositeExtract %float %259 2 %265 = OpLoad %v2float %sheetUnits
%264 = OpCompositeConstruct %v2float %262 %263 %266 = OpCompositeExtract %float %264 0
%265 = OpFDiv %v2float %264 %261 %267 = OpCompositeExtract %float %264 1
OpStore %frameSize %265 %268 = OpCompositeConstruct %v2float %266 %267
%266 = OpAccessChain %_ptr_Function_v4float %frameData %int_0 %269 = OpFMul %v2float %268 %265
%267 = OpLoad %v4float %266 OpStore %offset_1 %269
%268 = OpLoad %v2float %sheetUnits %270 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
%269 = OpCompositeExtract %float %267 0 %271 = OpLoad %v4float %270
%270 = OpCompositeExtract %float %267 1 %272 = OpAccessChain %_ptr_Function_v4float %frameData %119
%271 = OpCompositeConstruct %v2float %269 %270 %273 = OpLoad %v4float %272
%272 = OpFMul %v2float %271 %268 %274 = OpCompositeExtract %float %271 0
OpStore %offset_1 %272 %275 = OpCompositeExtract %float %271 1
%273 = OpAccessChain %_ptr_Function_v4float %frameData %int_2 %276 = OpCompositeConstruct %v2float %274 %275
%274 = OpLoad %v4float %273 %277 = OpCompositeExtract %float %273 3
%275 = OpAccessChain %_ptr_Function_v4float %frameData %int_0 %278 = OpCompositeExtract %float %273 2
%276 = OpLoad %v4float %275
%277 = OpCompositeExtract %float %274 0
%278 = OpCompositeExtract %float %274 1
%279 = OpCompositeConstruct %v2float %277 %278 %279 = OpCompositeConstruct %v2float %277 %278
%280 = OpCompositeExtract %float %276 3 %280 = OpFDiv %v2float %276 %279
%281 = OpCompositeExtract %float %276 2 OpStore %ratio %280
%282 = OpCompositeConstruct %v2float %280 %281 %281 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2
%283 = OpFDiv %v2float %279 %282 %282 = OpLoad %float %281
OpStore %ratio %283 %283 = OpFOrdEqual %bool %282 %float_1
%284 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2 OpSelectionMerge %284 None
%285 = OpLoad %float %284 OpBranchConditional %283 %285 %284
%286 = OpFOrdEqual %bool %285 %float_1 %285 = OpLabel
OpSelectionMerge %287 None %286 = OpLoad %v2float %tileUV
OpBranchConditional %286 %288 %287 %287 = OpCompositeExtract %float %286 1
%288 = OpLabel %288 = OpCompositeExtract %float %286 0
%289 = OpLoad %v2float %tileUV %289 = OpCompositeConstruct %v2float %287 %288
%290 = OpCompositeExtract %float %289 1 OpStore %tileUV %289
%291 = OpCompositeExtract %float %289 0 OpBranch %284
%292 = OpCompositeConstruct %v2float %290 %291 %284 = OpLabel
OpStore %tileUV %292 %290 = OpLoad %int %i
OpBranch %287 %291 = OpIEqual %bool %290 %119
%287 = OpLabel OpSelectionMerge %292 None
%293 = OpLoad %int %i OpBranchConditional %291 %293 %294
%294 = OpIEqual %bool %293 %int_0 %293 = OpLabel
OpSelectionMerge %295 None %295 = OpLoad %v2float %tileUV
OpBranchConditional %294 %296 %297 %296 = OpLoad %v2float %frameSize
%296 = OpLabel %297 = OpLoad %v2float %offset_1
%298 = OpLoad %v2float %tileUV %299 = OpLoad %26 %spriteSheetSampler
%299 = OpLoad %v2float %frameSize %300 = OpLoad %23 %spriteSheetTexture
%300 = OpLoad %v2float %offset_1 %301 = OpSampledImage %66 %300 %299
%302 = OpLoad %26 %spriteSheetSampler %302 = OpFMul %v2float %295 %296
%303 = OpLoad %23 %spriteSheetTexture %303 = OpFAdd %v2float %302 %297
%304 = OpSampledImage %66 %303 %302 %298 = OpImageSampleImplicitLod %v4float %301 %303
%305 = OpFMul %v2float %298 %299 OpStore %color %298
%306 = OpFAdd %v2float %305 %300 OpBranch %292
%301 = OpImageSampleImplicitLod %v4float %304 %306 %294 = OpLabel
OpStore %color %301 %304 = OpLoad %v2float %tileUV
OpBranch %295 %305 = OpLoad %v2float %frameSize
%297 = OpLabel %306 = OpLoad %v2float %offset_1
%307 = OpLoad %v2float %tileUV %308 = OpLoad %26 %spriteSheetSampler
%308 = OpLoad %v2float %frameSize %309 = OpLoad %23 %spriteSheetTexture
%309 = OpLoad %v2float %offset_1 %310 = OpSampledImage %66 %309 %308
%311 = OpLoad %26 %spriteSheetSampler %311 = OpFMul %v2float %304 %305
%312 = OpLoad %23 %spriteSheetTexture %312 = OpFAdd %v2float %311 %306
%313 = OpSampledImage %66 %312 %311 %307 = OpImageSampleImplicitLod %v4float %310 %312
%314 = OpFMul %v2float %307 %308 OpStore %nc %307
%315 = OpFAdd %v2float %314 %309 %314 = OpAccessChain %_ptr_Function_float %color %uint_3
%310 = OpImageSampleImplicitLod %v4float %313 %315 %315 = OpLoad %float %314
OpStore %nc %310 %316 = OpAccessChain %_ptr_Function_float %nc %uint_3
%317 = OpAccessChain %_ptr_Function_float %color %uint_3 %317 = OpLoad %float %316
%318 = OpLoad %float %317 %319 = OpFAdd %float %315 %317
%319 = OpAccessChain %_ptr_Function_float %nc %uint_3 %318 = OpExtInst %float %136 NMin %319 %float_1
%320 = OpLoad %float %319 OpStore %alpha %318
%322 = OpFAdd %float %318 %320 %320 = OpLoad %v4float %color
%321 = OpExtInst %float %138 NMin %322 %float_1 %321 = OpLoad %v4float %nc
OpStore %alpha %321 %322 = OpAccessChain %_ptr_Function_float %nc %uint_3
%323 = OpLoad %v4float %color %323 = OpLoad %float %322
%324 = OpLoad %v4float %nc %325 = OpCompositeExtract %float %320 0
%325 = OpAccessChain %_ptr_Function_float %nc %uint_3 %326 = OpCompositeExtract %float %320 1
%326 = OpLoad %float %325 %327 = OpCompositeExtract %float %320 2
%328 = OpCompositeExtract %float %323 0 %328 = OpCompositeConstruct %v3float %325 %326 %327
%329 = OpCompositeExtract %float %323 1 %329 = OpCompositeExtract %float %321 0
%330 = OpCompositeExtract %float %323 2 %330 = OpCompositeExtract %float %321 1
%331 = OpCompositeConstruct %v3float %328 %329 %330 %331 = OpCompositeExtract %float %321 2
%332 = OpCompositeExtract %float %324 0 %332 = OpCompositeConstruct %v3float %329 %330 %331
%333 = OpCompositeExtract %float %324 1 %333 = OpCompositeConstruct %v3float %323 %323 %323
%334 = OpCompositeExtract %float %324 2 %324 = OpExtInst %v3float %136 FMix %328 %332 %333
%335 = OpCompositeConstruct %v3float %332 %333 %334 OpStore %mixed %324
%336 = OpCompositeConstruct %v3float %326 %326 %326 %334 = OpLoad %v3float %mixed
%327 = OpExtInst %v3float %138 FMix %331 %335 %336 %335 = OpLoad %float %alpha
OpStore %mixed %327 %336 = OpCompositeExtract %float %334 0
%337 = OpLoad %v3float %mixed %337 = OpCompositeExtract %float %334 1
%338 = OpLoad %float %alpha %338 = OpCompositeExtract %float %334 2
%339 = OpCompositeExtract %float %337 0 %339 = OpCompositeConstruct %v4float %336 %337 %338 %335
%340 = OpCompositeExtract %float %337 1 OpStore %color %339
%341 = OpCompositeExtract %float %337 2 OpBranch %292
%342 = OpCompositeConstruct %v4float %339 %340 %341 %338 %292 = OpLabel
OpStore %color %342 OpBranch %160
OpBranch %295 %160 = OpLabel
%295 = OpLabel %340 = OpLoad %int %i
OpBranch %163 %342 = OpIAdd %int %340 %int_1
%163 = OpLabel OpStore %i %342
%343 = OpLoad %int %i OpBranch %158
%345 = OpIAdd %int %343 %int_1 %159 = OpLabel
OpStore %i %345 %345 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8
OpBranch %161 %346 = OpLoad %v3float %345
%162 = OpLabel %347 = OpLoad %v4float %color
%348 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8 %348 = OpCompositeExtract %float %347 0
%349 = OpLoad %v3float %348 %349 = OpCompositeExtract %float %347 1
%350 = OpLoad %v4float %color %350 = OpCompositeExtract %float %347 2
%351 = OpCompositeExtract %float %350 0 %351 = OpCompositeConstruct %v3float %348 %349 %350
%352 = OpCompositeExtract %float %350 1 %352 = OpFMul %v3float %351 %346
%353 = OpCompositeExtract %float %350 2 %353 = OpLoad %v4float %color
%354 = OpCompositeConstruct %v3float %351 %352 %353 %354 = OpCompositeExtract %float %352 0
%355 = OpFMul %v3float %354 %349 %355 = OpCompositeExtract %float %352 1
%356 = OpLoad %v4float %color %356 = OpCompositeExtract %float %352 2
%357 = OpCompositeExtract %float %355 0 %357 = OpCompositeExtract %float %353 3
%358 = OpCompositeExtract %float %355 1 %358 = OpCompositeConstruct %v4float %354 %355 %356 %357
%359 = OpCompositeExtract %float %355 2 OpStore %color %358
%360 = OpCompositeExtract %float %356 3 %359 = OpLoad %v4float %color
%361 = OpCompositeConstruct %v4float %357 %358 %359 %360 OpStore %glFragColor %359
OpStore %color %361
%362 = OpLoad %v4float %color
OpStore %glFragColor %362
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %main_out None %363 %main_inner = OpFunction %main_out None %360
%tUV_param = OpFunctionParameter %v2float %tUV_param = OpFunctionParameter %v2float
%tileID_1_param = OpFunctionParameter %v2float %tileID_1_param = OpFunctionParameter %v2float
%levelUnits_param = OpFunctionParameter %v2float %levelUnits_param = OpFunctionParameter %v2float
%stageUnits_1_param = OpFunctionParameter %v2float %stageUnits_1_param = OpFunctionParameter %v2float
%vPosition_param = OpFunctionParameter %v3float %vPosition_param = OpFunctionParameter %v3float
%vUV_param = OpFunctionParameter %v2float %vUV_param = OpFunctionParameter %v2float
%372 = OpLabel %369 = OpLabel
OpStore %tUV %tUV_param OpStore %tUV %tUV_param
OpStore %tileID_1 %tileID_1_param OpStore %tileID_1 %tileID_1_param
OpStore %levelUnits %levelUnits_param OpStore %levelUnits %levelUnits_param
OpStore %stageUnits_1 %stageUnits_1_param OpStore %stageUnits_1 %stageUnits_1_param
OpStore %vPosition %vPosition_param OpStore %vPosition %vPosition_param
OpStore %vUV %vUV_param OpStore %vUV %vUV_param
%373 = OpFunctionCall %void %main_1 %370 = OpFunctionCall %void %main_1
%374 = OpLoad %v4float %glFragColor %371 = OpLoad %v4float %glFragColor
%375 = OpCompositeConstruct %main_out %374 %372 = OpCompositeConstruct %main_out %371
OpReturnValue %375 OpReturnValue %372
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %106 %main = OpFunction %void None %104
%377 = OpLabel %374 = OpLabel
%379 = OpLoad %v2float %tUV_param_1 %376 = OpLoad %v2float %tUV_param_1
%380 = OpLoad %v2float %tileID_1_param_1 %377 = OpLoad %v2float %tileID_1_param_1
%381 = OpLoad %v2float %levelUnits_param_1 %378 = OpLoad %v2float %levelUnits_param_1
%382 = OpLoad %v2float %stageUnits_1_param_1 %379 = OpLoad %v2float %stageUnits_1_param_1
%383 = OpLoad %v3float %vPosition_param_1 %380 = OpLoad %v3float %vPosition_param_1
%384 = OpLoad %v2float %vUV_param_1 %381 = OpLoad %v2float %vUV_param_1
%378 = OpFunctionCall %main_out %main_inner %379 %380 %381 %382 %383 %384 %375 = OpFunctionCall %main_out %main_inner %376 %377 %378 %379 %380 %381
%385 = OpCompositeExtract %v4float %378 0 %382 = OpCompositeExtract %v4float %375 0
OpStore %glFragColor_1_1 %385 OpStore %glFragColor_1_1 %382
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -13,7 +13,7 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 675 ; Bound: 670
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%88 = OpExtInstImport "GLSL.std.450" %88 = OpExtInstImport "GLSL.std.450"
@ -280,7 +280,7 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
%152 = OpTypeFunction %mat3v3float %_ptr_Function_mat3v3float %152 = OpTypeFunction %mat3v3float %_ptr_Function_mat3v3float
%161 = OpConstantNull %mat3v3float %161 = OpConstantNull %mat3v3float
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%int_0 = OpConstant %int 0 %164 = OpConstantNull %int
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
@ -294,31 +294,26 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
%_ptr_Function_lightingInfo = OpTypePointer Function %lightingInfo %_ptr_Function_lightingInfo = OpTypePointer Function %lightingInfo
%261 = OpConstantNull %lightingInfo %261 = OpConstantNull %lightingInfo
%float_0_5 = OpConstant %float 0.5 %float_0_5 = OpConstant %float 0.5
%float_0 = OpConstant %float 0
%void = OpTypeVoid %void = OpTypeVoid
%311 = OpTypeFunction %void %310 = OpTypeFunction %void
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%342 = OpConstantNull %int
%float_100 = OpConstant %float 100 %float_100 = OpConstant %float 100
%371 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 %369 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
%376 = OpTypeSampledImage %25 %374 = OpTypeSampledImage %25
%uint_6 = OpConstant %uint 6 %uint_6 = OpConstant %uint 6
%_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_float = OpTypePointer Uniform %float
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%399 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%400 = OpConstantComposite %v2float %float_0 %float_0
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%uint_5 = OpConstant %uint 5 %uint_5 = OpConstant %uint 5
%float_15 = OpConstant %float 15 %float_15 = OpConstant %float 15
%float_n11 = OpConstant %float -11 %float_n11 = OpConstant %float -11
%int_15 = OpConstant %int 15 %int_15 = OpConstant %int 15
%593 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%main_out = OpTypeStruct %v4float %main_out = OpTypeStruct %v4float
%654 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float %649 = OpTypeFunction %main_out %v2float %v4float %bool %v2float %v4float
%cotangent_frame_vf3_vf3_vf2_vf2_ = OpFunction %mat3v3float None %52 %cotangent_frame_vf3_vf3_vf2_vf2_ = OpFunction %mat3v3float None %52
%normal_1 = OpFunctionParameter %_ptr_Function_v3float %normal_1 = OpFunctionParameter %_ptr_Function_v3float
%p = OpFunctionParameter %_ptr_Function_v3float %p = OpFunctionParameter %_ptr_Function_v3float
@ -422,7 +417,7 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
%i1 = OpVariable %_ptr_Function_v3float Function %22 %i1 = OpVariable %_ptr_Function_v3float Function %22
%i2 = OpVariable %_ptr_Function_v3float Function %22 %i2 = OpVariable %_ptr_Function_v3float Function %22
%outMatrix = OpVariable %_ptr_Function_mat3v3float Function %161 %outMatrix = OpVariable %_ptr_Function_mat3v3float Function %161
%165 = OpAccessChain %_ptr_Function_v3float %inMatrix %int_0 %165 = OpAccessChain %_ptr_Function_v3float %inMatrix %164
%166 = OpLoad %v3float %165 %166 = OpLoad %v3float %165
OpStore %i0 %166 OpStore %i0 %166
%169 = OpAccessChain %_ptr_Function_v3float %inMatrix %int_1 %169 = OpAccessChain %_ptr_Function_v3float %inMatrix %int_1
@ -540,24 +535,24 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
OpStore %angleW %288 OpStore %angleW %288
%295 = OpLoad %v3float %vNormal %295 = OpLoad %v3float %vNormal
%296 = OpLoad %v3float %angleW %296 = OpLoad %v3float %angleW
%299 = OpDot %float %295 %296 %298 = OpDot %float %295 %296
%297 = OpExtInst %float %88 NMax %float_0 %299 %297 = OpExtInst %float %88 NMax %18 %298
OpStore %specComp %297 OpStore %specComp %297
%300 = OpLoad %float %specComp %299 = OpLoad %float %specComp
%302 = OpLoad %float %glossiness %301 = OpLoad %float %glossiness
%304 = OpExtInst %float %88 NMax %float_1 %302 %303 = OpExtInst %float %88 NMax %float_1 %301
%303 = OpExtInst %float %88 Pow %300 %304 %302 = OpExtInst %float %88 Pow %299 %303
OpStore %specComp %303 OpStore %specComp %302
%305 = OpLoad %float %specComp %304 = OpLoad %float %specComp
%307 = OpLoad %v3float %specularColor %306 = OpLoad %v3float %specularColor
%308 = OpAccessChain %_ptr_Function_v3float %result %uint_1 %307 = OpAccessChain %_ptr_Function_v3float %result %uint_1
%309 = OpVectorTimesScalar %v3float %307 %305 %308 = OpVectorTimesScalar %v3float %306 %304
OpStore %308 %309 OpStore %307 %308
%310 = OpLoad %lightingInfo %result %309 = OpLoad %lightingInfo %result
OpReturnValue %310 OpReturnValue %309
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %311 %main_1 = OpFunction %void None %310
%314 = OpLabel %313 = OpLabel
%tempTextureRead = OpVariable %_ptr_Function_v4float Function %15 %tempTextureRead = OpVariable %_ptr_Function_v4float Function %15
%rgb = OpVariable %_ptr_Function_v3float Function %22 %rgb = OpVariable %_ptr_Function_v3float Function %22
%output5 = OpVariable %_ptr_Function_v3float Function %22 %output5 = OpVariable %_ptr_Function_v3float Function %22
@ -583,7 +578,7 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
%vLastOffset = OpVariable %_ptr_Function_v2float Function %31 %vLastOffset = OpVariable %_ptr_Function_v2float Function %31
%lastSampledHeight = OpVariable %_ptr_Function_float Function %18 %lastSampledHeight = OpVariable %_ptr_Function_float Function %18
%currSampledHeight = OpVariable %_ptr_Function_float Function %18 %currSampledHeight = OpVariable %_ptr_Function_float Function %18
%i = OpVariable %_ptr_Function_int Function %342 %i = OpVariable %_ptr_Function_int Function %164
%delta1 = OpVariable %_ptr_Function_float Function %18 %delta1 = OpVariable %_ptr_Function_float Function %18
%delta2 = OpVariable %_ptr_Function_float Function %18 %delta2 = OpVariable %_ptr_Function_float Function %18
%ratio = OpVariable %_ptr_Function_float Function %18 %ratio = OpVariable %_ptr_Function_float Function %18
@ -612,371 +607,371 @@ bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_out
%specularOutput = OpVariable %_ptr_Function_v3float Function %22 %specularOutput = OpVariable %_ptr_Function_v3float Function %22
%output3 = OpVariable %_ptr_Function_v3float Function %22 %output3 = OpVariable %_ptr_Function_v3float Function %22
OpStore %u_Float %float_100 OpStore %u_Float %float_100
OpStore %u_Color %371 OpStore %u_Color %369
%372 = OpLoad %v2float %vMainuv %370 = OpLoad %v2float %vMainuv
%374 = OpLoad %28 %TextureSamplerSampler %372 = OpLoad %28 %TextureSamplerSampler
%375 = OpLoad %25 %TextureSamplerTexture %373 = OpLoad %25 %TextureSamplerTexture
%377 = OpSampledImage %376 %375 %374 %375 = OpSampledImage %374 %373 %372
%373 = OpImageSampleImplicitLod %v4float %377 %372 %371 = OpImageSampleImplicitLod %v4float %375 %370
OpStore %tempTextureRead %373 OpStore %tempTextureRead %371
%378 = OpLoad %v4float %tempTextureRead %376 = OpLoad %v4float %tempTextureRead
%381 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_6 %379 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_6
%382 = OpLoad %float %381 %380 = OpLoad %float %379
%383 = OpCompositeExtract %float %378 0 %381 = OpCompositeExtract %float %376 0
%384 = OpCompositeExtract %float %378 1 %382 = OpCompositeExtract %float %376 1
%385 = OpCompositeExtract %float %378 2 %383 = OpCompositeExtract %float %376 2
%386 = OpCompositeConstruct %v3float %383 %384 %385 %384 = OpCompositeConstruct %v3float %381 %382 %383
%387 = OpVectorTimesScalar %v3float %386 %382 %385 = OpVectorTimesScalar %v3float %384 %380
OpStore %rgb %387 OpStore %rgb %385
%390 = OpAccessChain %_ptr_Uniform_v3float %x_269 %uint_4 %388 = OpAccessChain %_ptr_Uniform_v3float %x_269 %uint_4
%391 = OpLoad %v3float %390 %389 = OpLoad %v3float %388
%392 = OpLoad %v4float %v_output1 %390 = OpLoad %v4float %v_output1
%394 = OpCompositeExtract %float %392 0 %392 = OpCompositeExtract %float %390 0
%395 = OpCompositeExtract %float %392 1 %393 = OpCompositeExtract %float %390 1
%396 = OpCompositeExtract %float %392 2 %394 = OpCompositeExtract %float %390 2
%397 = OpCompositeConstruct %v3float %394 %395 %396 %395 = OpCompositeConstruct %v3float %392 %393 %394
%398 = OpFSub %v3float %391 %397 %396 = OpFSub %v3float %389 %395
%393 = OpExtInst %v3float %88 Normalize %398 %391 = OpExtInst %v3float %88 Normalize %396
OpStore %output5 %393 OpStore %output5 %391
OpStore %output4 %399 OpStore %output4 %15
OpStore %uvOffset %400 OpStore %uvOffset %31
%401 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_2 %397 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_2
%402 = OpLoad %float %401 %398 = OpLoad %float %397
%403 = OpFDiv %float %float_1 %402 %399 = OpFDiv %float %float_1 %398
OpStore %normalScale %403 OpStore %normalScale %399
%404 = OpLoad %bool %gl_FrontFacing %400 = OpLoad %bool %gl_FrontFacing
OpSelectionMerge %405 None OpSelectionMerge %401 None
OpBranchConditional %404 %406 %407 OpBranchConditional %400 %402 %403
%406 = OpLabel %402 = OpLabel
%408 = OpLoad %v2float %v_uv %404 = OpLoad %v2float %v_uv
OpStore %x_299 %408 OpStore %x_299 %404
OpBranch %405 OpBranch %401
%407 = OpLabel %403 = OpLabel
%409 = OpLoad %v2float %v_uv %405 = OpLoad %v2float %v_uv
%410 = OpFNegate %v2float %409 %406 = OpFNegate %v2float %405
OpStore %x_299 %410 OpStore %x_299 %406
OpBranch %405 OpBranch %401
%405 = OpLabel %401 = OpLabel
%411 = OpLoad %v2float %x_299 %407 = OpLoad %v2float %x_299
OpStore %TBNUV %411 OpStore %TBNUV %407
%412 = OpLoad %v4float %v_output2 %408 = OpLoad %v4float %v_output2
%413 = OpLoad %float %normalScale %409 = OpLoad %float %normalScale
%414 = OpCompositeExtract %float %412 0 %410 = OpCompositeExtract %float %408 0
%415 = OpCompositeExtract %float %412 1 %411 = OpCompositeExtract %float %408 1
%416 = OpCompositeExtract %float %412 2 %412 = OpCompositeExtract %float %408 2
%417 = OpCompositeConstruct %v3float %414 %415 %416 %413 = OpCompositeConstruct %v3float %410 %411 %412
%418 = OpVectorTimesScalar %v3float %417 %413 %414 = OpVectorTimesScalar %v3float %413 %409
OpStore %param_3 %418 OpStore %param_3 %414
%419 = OpLoad %v4float %v_output1 %415 = OpLoad %v4float %v_output1
%420 = OpCompositeExtract %float %419 0 %416 = OpCompositeExtract %float %415 0
%421 = OpCompositeExtract %float %419 1 %417 = OpCompositeExtract %float %415 1
%422 = OpCompositeExtract %float %419 2 %418 = OpCompositeExtract %float %415 2
%423 = OpCompositeConstruct %v3float %420 %421 %422 %419 = OpCompositeConstruct %v3float %416 %417 %418
OpStore %param_4 %423 OpStore %param_4 %419
%424 = OpLoad %v2float %TBNUV %420 = OpLoad %v2float %TBNUV
OpStore %param_5 %424 OpStore %param_5 %420
%427 = OpAccessChain %_ptr_Uniform_v2float %x_269 %uint_8 %423 = OpAccessChain %_ptr_Uniform_v2float %x_269 %uint_8
%428 = OpLoad %v2float %427 %424 = OpLoad %v2float %423
OpStore %param_6 %428 OpStore %param_6 %424
%429 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2_ %param_3 %param_4 %param_5 %param_6 %425 = OpFunctionCall %mat3v3float %cotangent_frame_vf3_vf3_vf2_vf2_ %param_3 %param_4 %param_5 %param_6
OpStore %TBN %429 OpStore %TBN %425
%434 = OpLoad %mat3v3float %TBN %430 = OpLoad %mat3v3float %TBN
OpStore %param_7 %434 OpStore %param_7 %430
%435 = OpFunctionCall %mat3v3float %transposeMat3_mf33_ %param_7 %431 = OpFunctionCall %mat3v3float %transposeMat3_mf33_ %param_7
OpStore %invTBN %435 OpStore %invTBN %431
%433 = OpLoad %mat3v3float %invTBN
%434 = OpLoad %v3float %output5
%435 = OpFNegate %v3float %434
%436 = OpMatrixTimesVector %v3float %433 %435
%437 = OpLoad %mat3v3float %invTBN %437 = OpLoad %mat3v3float %invTBN
%438 = OpLoad %v3float %output5 %438 = OpLoad %v3float %output5
%439 = OpFNegate %v3float %438 %440 = OpCompositeExtract %float %436 0
%440 = OpMatrixTimesVector %v3float %437 %439 %441 = OpCompositeExtract %float %436 1
%441 = OpLoad %mat3v3float %invTBN %442 = OpCompositeConstruct %v2float %440 %441
%442 = OpLoad %v3float %output5 %439 = OpExtInst %float %88 Length %442
%444 = OpCompositeExtract %float %440 0 %443 = OpFNegate %v3float %438
%445 = OpCompositeExtract %float %440 1 %444 = OpMatrixTimesVector %v3float %437 %443
%446 = OpCompositeConstruct %v2float %444 %445 %445 = OpCompositeExtract %float %444 2
%443 = OpExtInst %float %88 Length %446 %446 = OpFDiv %float %439 %445
%447 = OpFNegate %v3float %442 OpStore %parallaxLimit %446
%448 = OpMatrixTimesVector %v3float %441 %447 %448 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_5
%449 = OpCompositeExtract %float %448 2 %449 = OpLoad %float %448
%450 = OpFDiv %float %443 %449 %450 = OpLoad %float %parallaxLimit
OpStore %parallaxLimit %450 %451 = OpFMul %float %450 %449
%452 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_5 OpStore %parallaxLimit %451
%453 = OpLoad %float %452 %452 = OpLoad %mat3v3float %invTBN
%454 = OpLoad %float %parallaxLimit %453 = OpLoad %v3float %output5
%455 = OpFMul %float %454 %453 %454 = OpFNegate %v3float %453
OpStore %parallaxLimit %455 %455 = OpMatrixTimesVector %v3float %452 %454
%456 = OpLoad %mat3v3float %invTBN %457 = OpCompositeExtract %float %455 0
%457 = OpLoad %v3float %output5 %458 = OpCompositeExtract %float %455 1
%458 = OpFNegate %v3float %457 %459 = OpCompositeConstruct %v2float %457 %458
%459 = OpMatrixTimesVector %v3float %456 %458 %456 = OpExtInst %v2float %88 Normalize %459
%461 = OpCompositeExtract %float %459 0 OpStore %vOffsetDir %456
%462 = OpCompositeExtract %float %459 1 %460 = OpLoad %v2float %vOffsetDir
%463 = OpCompositeConstruct %v2float %461 %462 %461 = OpLoad %float %parallaxLimit
%460 = OpExtInst %v2float %88 Normalize %463 %462 = OpVectorTimesScalar %v2float %460 %461
OpStore %vOffsetDir %460 OpStore %vMaxOffset %462
%464 = OpLoad %v2float %vOffsetDir %463 = OpLoad %mat3v3float %invTBN
%465 = OpLoad %float %parallaxLimit %464 = OpLoad %v3float %output5
%466 = OpVectorTimesScalar %v2float %464 %465 %465 = OpLoad %mat3v3float %invTBN
OpStore %vMaxOffset %466 %466 = OpLoad %v4float %v_output2
%467 = OpLoad %mat3v3float %invTBN %469 = OpFNegate %v3float %464
%468 = OpLoad %v3float %output5 %470 = OpMatrixTimesVector %v3float %463 %469
%469 = OpLoad %mat3v3float %invTBN %471 = OpCompositeExtract %float %466 0
%470 = OpLoad %v4float %v_output2 %472 = OpCompositeExtract %float %466 1
%473 = OpFNegate %v3float %468 %473 = OpCompositeExtract %float %466 2
%474 = OpMatrixTimesVector %v3float %467 %473 %474 = OpCompositeConstruct %v3float %471 %472 %473
%475 = OpCompositeExtract %float %470 0 %475 = OpMatrixTimesVector %v3float %465 %474
%476 = OpCompositeExtract %float %470 1 %468 = OpDot %float %470 %475
%477 = OpCompositeExtract %float %470 2 %477 = OpFMul %float %468 %float_n11
%478 = OpCompositeConstruct %v3float %475 %476 %477 %478 = OpFAdd %float %float_15 %477
%479 = OpMatrixTimesVector %v3float %469 %478 OpStore %numSamples %478
%472 = OpDot %float %474 %479 %479 = OpLoad %float %numSamples
%481 = OpFMul %float %472 %float_n11 %480 = OpFDiv %float %float_1 %479
%482 = OpFAdd %float %float_15 %481 OpStore %stepSize %480
OpStore %numSamples %482
%483 = OpLoad %float %numSamples
%484 = OpFDiv %float %float_1 %483
OpStore %stepSize %484
OpStore %currRayHeight %float_1 OpStore %currRayHeight %float_1
OpStore %vCurrOffset %400 OpStore %vCurrOffset %31
OpStore %vLastOffset %400 OpStore %vLastOffset %31
OpStore %lastSampledHeight %float_1 OpStore %lastSampledHeight %float_1
OpStore %currSampledHeight %float_1 OpStore %currSampledHeight %float_1
OpStore %i %int_0 OpStore %i %164
OpBranch %485 OpBranch %481
%485 = OpLabel %481 = OpLabel
OpLoopMerge %486 %487 None OpLoopMerge %482 %483 None
OpBranch %484
%484 = OpLabel
%485 = OpLoad %int %i
%487 = OpSLessThan %bool %485 %int_15
OpSelectionMerge %488 None
OpBranchConditional %487 %489 %490
%489 = OpLabel
OpBranch %488 OpBranch %488
%490 = OpLabel
OpBranch %482
%488 = OpLabel %488 = OpLabel
%489 = OpLoad %int %i %491 = OpLoad %v2float %v_uv
%491 = OpSLessThan %bool %489 %int_15 %492 = OpLoad %v2float %vCurrOffset
OpSelectionMerge %492 None %494 = OpLoad %28 %TextureSamplerSampler
OpBranchConditional %491 %493 %494 %495 = OpLoad %25 %TextureSamplerTexture
%493 = OpLabel %496 = OpSampledImage %374 %495 %494
OpBranch %492 %497 = OpFAdd %v2float %491 %492
%494 = OpLabel %493 = OpImageSampleImplicitLod %v4float %496 %497
OpBranch %486 %498 = OpCompositeExtract %float %493 3
%492 = OpLabel OpStore %currSampledHeight %498
%495 = OpLoad %v2float %v_uv %499 = OpLoad %float %currSampledHeight
%496 = OpLoad %v2float %vCurrOffset %500 = OpLoad %float %currRayHeight
%498 = OpLoad %28 %TextureSamplerSampler %501 = OpFOrdGreaterThan %bool %499 %500
%499 = OpLoad %25 %TextureSamplerTexture OpSelectionMerge %502 None
%500 = OpSampledImage %376 %499 %498 OpBranchConditional %501 %503 %504
%501 = OpFAdd %v2float %495 %496 %503 = OpLabel
%497 = OpImageSampleImplicitLod %v4float %500 %501 %505 = OpLoad %float %currSampledHeight
%502 = OpCompositeExtract %float %497 3 %506 = OpLoad %float %currRayHeight
OpStore %currSampledHeight %502 %507 = OpFSub %float %505 %506
%503 = OpLoad %float %currSampledHeight OpStore %delta1 %507
%504 = OpLoad %float %currRayHeight %508 = OpLoad %float %currRayHeight
%505 = OpFOrdGreaterThan %bool %503 %504 %509 = OpLoad %float %stepSize
OpSelectionMerge %506 None %510 = OpLoad %float %lastSampledHeight
OpBranchConditional %505 %507 %508 %511 = OpFAdd %float %508 %509
%507 = OpLabel %512 = OpFSub %float %511 %510
%509 = OpLoad %float %currSampledHeight OpStore %delta2 %512
%510 = OpLoad %float %currRayHeight %513 = OpLoad %float %delta1
%511 = OpFSub %float %509 %510 %514 = OpLoad %float %delta1
OpStore %delta1 %511 %515 = OpLoad %float %delta2
%512 = OpLoad %float %currRayHeight %516 = OpFAdd %float %514 %515
%513 = OpLoad %float %stepSize %517 = OpFDiv %float %513 %516
%514 = OpLoad %float %lastSampledHeight OpStore %ratio %517
%515 = OpFAdd %float %512 %513 %518 = OpLoad %float %ratio
%516 = OpFSub %float %515 %514 %519 = OpLoad %v2float %vLastOffset
OpStore %delta2 %516 %520 = OpLoad %float %ratio
%517 = OpLoad %float %delta1 %521 = OpLoad %v2float %vCurrOffset
%518 = OpLoad %float %delta1 %522 = OpVectorTimesScalar %v2float %519 %518
%519 = OpLoad %float %delta2 %523 = OpFSub %float %float_1 %520
%520 = OpFAdd %float %518 %519 %524 = OpVectorTimesScalar %v2float %521 %523
%521 = OpFDiv %float %517 %520 %525 = OpFAdd %v2float %522 %524
OpStore %ratio %521 OpStore %vCurrOffset %525
%522 = OpLoad %float %ratio OpBranch %482
%523 = OpLoad %v2float %vLastOffset %504 = OpLabel
%524 = OpLoad %float %ratio %526 = OpLoad %float %stepSize
%525 = OpLoad %v2float %vCurrOffset %527 = OpLoad %float %currRayHeight
%526 = OpVectorTimesScalar %v2float %523 %522 %528 = OpFSub %float %527 %526
%527 = OpFSub %float %float_1 %524 OpStore %currRayHeight %528
%528 = OpVectorTimesScalar %v2float %525 %527 %529 = OpLoad %v2float %vCurrOffset
%529 = OpFAdd %v2float %526 %528 OpStore %vLastOffset %529
OpStore %vCurrOffset %529
OpBranch %486
%508 = OpLabel
%530 = OpLoad %float %stepSize %530 = OpLoad %float %stepSize
%531 = OpLoad %float %currRayHeight %531 = OpLoad %v2float %vMaxOffset
%532 = OpFSub %float %531 %530 %532 = OpLoad %v2float %vCurrOffset
OpStore %currRayHeight %532 %533 = OpVectorTimesScalar %v2float %531 %530
%533 = OpLoad %v2float %vCurrOffset %534 = OpFAdd %v2float %532 %533
OpStore %vLastOffset %533 OpStore %vCurrOffset %534
%534 = OpLoad %float %stepSize %535 = OpLoad %float %currSampledHeight
%535 = OpLoad %v2float %vMaxOffset OpStore %lastSampledHeight %535
%536 = OpLoad %v2float %vCurrOffset OpBranch %502
%537 = OpVectorTimesScalar %v2float %535 %534 %502 = OpLabel
%538 = OpFAdd %v2float %536 %537 OpBranch %483
OpStore %vCurrOffset %538 %483 = OpLabel
%539 = OpLoad %float %currSampledHeight %536 = OpLoad %int %i
OpStore %lastSampledHeight %539 %537 = OpIAdd %int %536 %int_1
OpBranch %506 OpStore %i %537
%506 = OpLabel OpBranch %481
OpBranch %487 %482 = OpLabel
%487 = OpLabel %538 = OpLoad %v2float %vCurrOffset
%540 = OpLoad %int %i OpStore %parallaxOcclusion_0 %538
%541 = OpIAdd %int %540 %int_1 %539 = OpLoad %v2float %parallaxOcclusion_0
OpStore %i %541 OpStore %uvOffset %539
OpBranch %485 %540 = OpLoad %v2float %v_uv
%486 = OpLabel %541 = OpLoad %v2float %uvOffset
%542 = OpLoad %v2float %vCurrOffset %543 = OpLoad %28 %TextureSamplerSampler
OpStore %parallaxOcclusion_0 %542 %544 = OpLoad %25 %TextureSamplerTexture
%543 = OpLoad %v2float %parallaxOcclusion_0 %545 = OpSampledImage %374 %544 %543
OpStore %uvOffset %543 %546 = OpFAdd %v2float %540 %541
%544 = OpLoad %v2float %v_uv %542 = OpImageSampleImplicitLod %v4float %545 %546
%545 = OpLoad %v2float %uvOffset %547 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_2
%547 = OpLoad %28 %TextureSamplerSampler %548 = OpLoad %float %547
%548 = OpLoad %25 %TextureSamplerTexture %549 = OpLoad %mat3v3float %TBN
%549 = OpSampledImage %376 %548 %547 OpStore %param_8 %549
%550 = OpFAdd %v2float %544 %545 %550 = OpCompositeExtract %float %542 0
%546 = OpImageSampleImplicitLod %v4float %549 %550 %551 = OpCompositeExtract %float %542 1
%551 = OpAccessChain %_ptr_Uniform_float %x_269 %uint_2 %552 = OpCompositeExtract %float %542 2
%552 = OpLoad %float %551 %553 = OpCompositeConstruct %v3float %550 %551 %552
%553 = OpLoad %mat3v3float %TBN OpStore %param_9 %553
OpStore %param_8 %553 %554 = OpFDiv %float %float_1 %548
%554 = OpCompositeExtract %float %546 0 OpStore %param_10 %554
%555 = OpCompositeExtract %float %546 1 %555 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1_ %param_8 %param_9 %param_10
%556 = OpCompositeExtract %float %546 2 %559 = OpLoad %v4float %output4
%557 = OpCompositeConstruct %v3float %554 %555 %556 %560 = OpCompositeExtract %float %555 0
OpStore %param_9 %557 %561 = OpCompositeExtract %float %555 1
%558 = OpFDiv %float %float_1 %552 %562 = OpCompositeExtract %float %555 2
OpStore %param_10 %558 %563 = OpCompositeExtract %float %559 3
%559 = OpFunctionCall %v3float %perturbNormal_mf33_vf3_f1_ %param_8 %param_9 %param_10 %564 = OpCompositeConstruct %v4float %560 %561 %562 %563
%563 = OpLoad %v4float %output4 OpStore %output4 %564
%564 = OpCompositeExtract %float %559 0 %565 = OpLoad %v2float %v_uv
%565 = OpCompositeExtract %float %559 1 %566 = OpLoad %v2float %uvOffset
%566 = OpCompositeExtract %float %559 2 %567 = OpFAdd %v2float %565 %566
%567 = OpCompositeExtract %float %563 3 OpStore %output6 %567
%568 = OpCompositeConstruct %v4float %564 %565 %566 %567 %568 = OpLoad %v2float %output6
OpStore %output4 %568 %570 = OpLoad %28 %TextureSampler1Sampler
%569 = OpLoad %v2float %v_uv %571 = OpLoad %25 %TextureSampler1Texture
%570 = OpLoad %v2float %uvOffset %572 = OpSampledImage %374 %571 %570
%571 = OpFAdd %v2float %569 %570 %569 = OpImageSampleImplicitLod %v4float %572 %568
OpStore %output6 %571 OpStore %tempTextureRead1 %569
%572 = OpLoad %v2float %output6 %573 = OpLoad %v4float %tempTextureRead1
%574 = OpLoad %28 %TextureSampler1Sampler %574 = OpCompositeExtract %float %573 0
%575 = OpLoad %25 %TextureSampler1Texture %575 = OpCompositeExtract %float %573 1
%576 = OpSampledImage %376 %575 %574 %576 = OpCompositeExtract %float %573 2
%573 = OpImageSampleImplicitLod %v4float %576 %572 %577 = OpCompositeConstruct %v3float %574 %575 %576
OpStore %tempTextureRead1 %573 OpStore %rgb1 %577
%577 = OpLoad %v4float %tempTextureRead1 %578 = OpAccessChain %_ptr_Uniform_v3float %x_269 %uint_4
%578 = OpCompositeExtract %float %577 0 %579 = OpLoad %v3float %578
%579 = OpCompositeExtract %float %577 1 %580 = OpLoad %v4float %v_output1
%580 = OpCompositeExtract %float %577 2 %582 = OpCompositeExtract %float %580 0
%581 = OpCompositeConstruct %v3float %578 %579 %580 %583 = OpCompositeExtract %float %580 1
OpStore %rgb1 %581 %584 = OpCompositeExtract %float %580 2
%582 = OpAccessChain %_ptr_Uniform_v3float %x_269 %uint_4 %585 = OpCompositeConstruct %v3float %582 %583 %584
%583 = OpLoad %v3float %582 %586 = OpFSub %v3float %579 %585
%584 = OpLoad %v4float %v_output1 %581 = OpExtInst %v3float %88 Normalize %586
%586 = OpCompositeExtract %float %584 0 OpStore %viewDirectionW_1 %581
%587 = OpCompositeExtract %float %584 1
%588 = OpCompositeExtract %float %584 2
%589 = OpCompositeConstruct %v3float %586 %587 %588
%590 = OpFSub %v3float %583 %589
%585 = OpExtInst %v3float %88 Normalize %590
OpStore %viewDirectionW_1 %585
OpStore %shadow %float_1 OpStore %shadow %float_1
%591 = OpLoad %float %u_Float %587 = OpLoad %float %u_Float
%592 = OpFMul %float %float_1 %591 %588 = OpFMul %float %float_1 %587
OpStore %glossiness_1 %592 OpStore %glossiness_1 %588
OpStore %diffuseBase %593 OpStore %diffuseBase %22
OpStore %specularBase %593 OpStore %specularBase %22
%594 = OpLoad %v4float %output4 %589 = OpLoad %v4float %output4
%595 = OpCompositeExtract %float %594 0 %590 = OpCompositeExtract %float %589 0
%596 = OpCompositeExtract %float %594 1 %591 = OpCompositeExtract %float %589 1
%597 = OpCompositeExtract %float %594 2 %592 = OpCompositeExtract %float %589 2
%598 = OpCompositeConstruct %v3float %595 %596 %597 %593 = OpCompositeConstruct %v3float %590 %591 %592
OpStore %normalW %598 OpStore %normalW %593
%599 = OpLoad %v3float %viewDirectionW_1 %594 = OpLoad %v3float %viewDirectionW_1
OpStore %param_11 %599 OpStore %param_11 %594
%600 = OpLoad %v3float %normalW %595 = OpLoad %v3float %normalW
OpStore %param_12 %600 OpStore %param_12 %595
%602 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_0 %597 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_0
%603 = OpLoad %v4float %602 %598 = OpLoad %v4float %597
OpStore %param_13 %603 OpStore %param_13 %598
%604 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_1 %599 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_1
%605 = OpLoad %v4float %604 %600 = OpLoad %v4float %599
%606 = OpCompositeExtract %float %605 0 %601 = OpCompositeExtract %float %600 0
%607 = OpCompositeExtract %float %605 1 %602 = OpCompositeExtract %float %600 1
%608 = OpCompositeExtract %float %605 2 %603 = OpCompositeExtract %float %600 2
%609 = OpCompositeConstruct %v3float %606 %607 %608 %604 = OpCompositeConstruct %v3float %601 %602 %603
OpStore %param_14 %609 OpStore %param_14 %604
%610 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_2 %605 = OpAccessChain %_ptr_Uniform_v4float %light0 %uint_2
%611 = OpLoad %v4float %610 %606 = OpLoad %v4float %605
%612 = OpCompositeExtract %float %611 0 %607 = OpCompositeExtract %float %606 0
%613 = OpCompositeExtract %float %611 1 %608 = OpCompositeExtract %float %606 1
%614 = OpCompositeExtract %float %611 2 %609 = OpCompositeExtract %float %606 2
%615 = OpCompositeConstruct %v3float %612 %613 %614 %610 = OpCompositeConstruct %v3float %607 %608 %609
OpStore %param_15 %615 OpStore %param_15 %610
%617 = OpAccessChain %_ptr_Uniform_v3float %light0 %uint_3 %612 = OpAccessChain %_ptr_Uniform_v3float %light0 %uint_3
%618 = OpLoad %v3float %617 %613 = OpLoad %v3float %612
OpStore %param_16 %618 OpStore %param_16 %613
%619 = OpLoad %float %glossiness_1 %614 = OpLoad %float %glossiness_1
OpStore %param_17 %619 OpStore %param_17 %614
%620 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17 %615 = OpFunctionCall %lightingInfo %computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_ %param_11 %param_12 %param_13 %param_14 %param_15 %param_16 %param_17
OpStore %info %620 OpStore %info %615
OpStore %shadow %float_1 OpStore %shadow %float_1
%628 = OpAccessChain %_ptr_Function_v3float %info %uint_0 %623 = OpAccessChain %_ptr_Function_v3float %info %uint_0
%629 = OpLoad %v3float %628 %624 = OpLoad %v3float %623
%630 = OpLoad %float %shadow %625 = OpLoad %float %shadow
%631 = OpLoad %v3float %diffuseBase %626 = OpLoad %v3float %diffuseBase
%632 = OpVectorTimesScalar %v3float %629 %630 %627 = OpVectorTimesScalar %v3float %624 %625
%633 = OpFAdd %v3float %631 %632 %628 = OpFAdd %v3float %626 %627
OpStore %diffuseBase %633 OpStore %diffuseBase %628
%634 = OpAccessChain %_ptr_Function_v3float %info %uint_1 %629 = OpAccessChain %_ptr_Function_v3float %info %uint_1
%635 = OpLoad %v3float %634 %630 = OpLoad %v3float %629
%636 = OpLoad %float %shadow %631 = OpLoad %float %shadow
%637 = OpLoad %v3float %specularBase %632 = OpLoad %v3float %specularBase
%638 = OpVectorTimesScalar %v3float %635 %636 %633 = OpVectorTimesScalar %v3float %630 %631
%639 = OpFAdd %v3float %637 %638 %634 = OpFAdd %v3float %632 %633
OpStore %specularBase %639 OpStore %specularBase %634
%640 = OpLoad %v3float %diffuseBase %635 = OpLoad %v3float %diffuseBase
%641 = OpLoad %v3float %rgb1 %636 = OpLoad %v3float %rgb1
%642 = OpFMul %v3float %640 %641 %637 = OpFMul %v3float %635 %636
OpStore %diffuseOutput %642 OpStore %diffuseOutput %637
%643 = OpLoad %v3float %specularBase %638 = OpLoad %v3float %specularBase
%644 = OpLoad %v3float %u_Color %639 = OpLoad %v3float %u_Color
%645 = OpFMul %v3float %643 %644 %640 = OpFMul %v3float %638 %639
OpStore %specularOutput %645 OpStore %specularOutput %640
%646 = OpLoad %v3float %diffuseOutput %641 = OpLoad %v3float %diffuseOutput
%647 = OpLoad %v3float %specularOutput %642 = OpLoad %v3float %specularOutput
%648 = OpFAdd %v3float %646 %647 %643 = OpFAdd %v3float %641 %642
OpStore %output3 %648 OpStore %output3 %643
%649 = OpLoad %v3float %output3 %644 = OpLoad %v3float %output3
%650 = OpCompositeExtract %float %649 0 %645 = OpCompositeExtract %float %644 0
%651 = OpCompositeExtract %float %649 1 %646 = OpCompositeExtract %float %644 1
%652 = OpCompositeExtract %float %649 2 %647 = OpCompositeExtract %float %644 2
%653 = OpCompositeConstruct %v4float %650 %651 %652 %float_1 %648 = OpCompositeConstruct %v4float %645 %646 %647 %float_1
OpStore %glFragColor %653 OpStore %glFragColor %648
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %main_out None %654 %main_inner = OpFunction %main_out None %649
%vMainuv_param = OpFunctionParameter %v2float %vMainuv_param = OpFunctionParameter %v2float
%v_output1_param = OpFunctionParameter %v4float %v_output1_param = OpFunctionParameter %v4float
%gl_FrontFacing_param = OpFunctionParameter %bool %gl_FrontFacing_param = OpFunctionParameter %bool
%v_uv_param = OpFunctionParameter %v2float %v_uv_param = OpFunctionParameter %v2float
%v_output2_param = OpFunctionParameter %v4float %v_output2_param = OpFunctionParameter %v4float
%662 = OpLabel %657 = OpLabel
OpStore %vMainuv %vMainuv_param OpStore %vMainuv %vMainuv_param
OpStore %v_output1 %v_output1_param OpStore %v_output1 %v_output1_param
OpStore %gl_FrontFacing %gl_FrontFacing_param OpStore %gl_FrontFacing %gl_FrontFacing_param
OpStore %v_uv %v_uv_param OpStore %v_uv %v_uv_param
OpStore %v_output2 %v_output2_param OpStore %v_output2 %v_output2_param
%663 = OpFunctionCall %void %main_1 %658 = OpFunctionCall %void %main_1
%664 = OpLoad %v4float %glFragColor %659 = OpLoad %v4float %glFragColor
%665 = OpCompositeConstruct %main_out %664 %660 = OpCompositeConstruct %main_out %659
OpReturnValue %665 OpReturnValue %660
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %311 %main = OpFunction %void None %310
%667 = OpLabel %662 = OpLabel
%669 = OpLoad %v2float %vMainuv_param_1 %664 = OpLoad %v2float %vMainuv_param_1
%670 = OpLoad %v4float %v_output1_param_1 %665 = OpLoad %v4float %v_output1_param_1
%671 = OpLoad %bool %gl_FrontFacing_param_1 %666 = OpLoad %bool %gl_FrontFacing_param_1
%672 = OpLoad %v2float %v_uv_param_1 %667 = OpLoad %v2float %v_uv_param_1
%673 = OpLoad %v4float %v_output2_param_1 %668 = OpLoad %v4float %v_output2_param_1
%668 = OpFunctionCall %main_out %main_inner %669 %670 %671 %672 %673 %663 = OpFunctionCall %main_out %main_inner %664 %665 %666 %667 %668
%674 = OpCompositeExtract %v4float %668 0 %669 = OpCompositeExtract %v4float %663 0
OpStore %glFragColor_1_1 %674 OpStore %glFragColor_1_1 %669
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 97 ; Bound: 96
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%46 = OpExtInstImport "GLSL.std.450" %46 = OpExtInstImport "GLSL.std.450"
@ -83,7 +83,7 @@
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%30 = OpTypeFunction %float %_ptr_Function_float %30 = OpTypeFunction %float %_ptr_Function_float
%float_0 = OpConstant %float 0 %37 = OpConstantNull %float
%bool = OpTypeBool %bool = OpTypeBool
%float_0x1p_128 = OpConstant %float 0x1p+128 %float_0x1p_128 = OpConstant %float 0x1p+128
%void = OpTypeVoid %void = OpTypeVoid
@ -91,10 +91,9 @@
%47 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_float %47 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_float
%59 = OpTypeFunction %void %59 = OpTypeFunction %void
%63 = OpConstantNull %int %63 = OpConstantNull %int
%65 = OpConstantNull %float
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%_ptr_Uniform_int = OpTypePointer Uniform %int %_ptr_Uniform_int = OpTypePointer Uniform %int
%88 = OpTypeFunction %void %v3uint %87 = OpTypeFunction %void %v3uint
%getAAtOutCoords_ = OpFunction %float None %20 %getAAtOutCoords_ = OpFunction %float None %20
%22 = OpLabel %22 = OpLabel
%25 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0 %25 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
@ -107,7 +106,7 @@
%a = OpFunctionParameter %_ptr_Function_float %a = OpFunctionParameter %_ptr_Function_float
%34 = OpLabel %34 = OpLabel
%36 = OpLoad %float %a %36 = OpLoad %float %a
%38 = OpFOrdLessThan %bool %36 %float_0 %38 = OpFOrdLessThan %bool %36 %37
OpSelectionMerge %40 None OpSelectionMerge %40 None
OpBranchConditional %38 %41 %40 OpBranchConditional %38 %41 %40
%41 = OpLabel %41 = OpLabel
@ -130,44 +129,44 @@
%main_1 = OpFunction %void None %59 %main_1 = OpFunction %void None %59
%61 = OpLabel %61 = OpLabel
%index = OpVariable %_ptr_Function_int Function %63 %index = OpVariable %_ptr_Function_int Function %63
%a_1 = OpVariable %_ptr_Function_float Function %65 %a_1 = OpVariable %_ptr_Function_float Function %37
%param = OpVariable %_ptr_Function_float Function %65 %param = OpVariable %_ptr_Function_float Function %37
%param_1 = OpVariable %_ptr_Function_int Function %63 %param_1 = OpVariable %_ptr_Function_int Function %63
%param_2 = OpVariable %_ptr_Function_float Function %65 %param_2 = OpVariable %_ptr_Function_float Function %37
%69 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0 %68 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
%70 = OpLoad %uint %69 %69 = OpLoad %uint %68
%71 = OpBitcast %int %70 %70 = OpBitcast %int %69
OpStore %index %71 OpStore %index %70
%72 = OpLoad %int %index %71 = OpLoad %int %index
%75 = OpAccessChain %_ptr_Uniform_int %x_24 %uint_4 %74 = OpAccessChain %_ptr_Uniform_int %x_24 %uint_4
%76 = OpLoad %int %75 %75 = OpLoad %int %74
%77 = OpSLessThan %bool %72 %76 %76 = OpSLessThan %bool %71 %75
OpSelectionMerge %78 None OpSelectionMerge %77 None
OpBranchConditional %77 %79 %78 OpBranchConditional %76 %78 %77
%79 = OpLabel
%80 = OpFunctionCall %float %getAAtOutCoords_
OpStore %a_1 %80
%81 = OpLoad %float %a_1
OpStore %param %81
%82 = OpFunctionCall %float %unaryOperation_f1_ %param
%84 = OpLoad %int %index
OpStore %param_1 %84
OpStore %param_2 %82
%85 = OpFunctionCall %void %setOutput_i1_f1_ %param_1 %param_2
OpBranch %78
%78 = OpLabel %78 = OpLabel
%79 = OpFunctionCall %float %getAAtOutCoords_
OpStore %a_1 %79
%80 = OpLoad %float %a_1
OpStore %param %80
%81 = OpFunctionCall %float %unaryOperation_f1_ %param
%83 = OpLoad %int %index
OpStore %param_1 %83
OpStore %param_2 %81
%84 = OpFunctionCall %void %setOutput_i1_f1_ %param_1 %param_2
OpBranch %77
%77 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %void None %88 %main_inner = OpFunction %void None %87
%gl_GlobalInvocationID_param = OpFunctionParameter %v3uint %gl_GlobalInvocationID_param = OpFunctionParameter %v3uint
%91 = OpLabel %90 = OpLabel
OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param
%92 = OpFunctionCall %void %main_1 %91 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %59 %main = OpFunction %void None %59
%94 = OpLabel %93 = OpLabel
%96 = OpLoad %v3uint %gl_GlobalInvocationID_param_1 %95 = OpLoad %v3uint %gl_GlobalInvocationID_param_1
%95 = OpFunctionCall %void %main_inner %96 %94 = OpFunctionCall %void %main_inner %95
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,10 +1,10 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 103 ; Bound: 102
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%43 = OpExtInstImport "GLSL.std.450" %42 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID_param_1 OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID_param_1
OpExecutionMode %main LocalSize 1 1 1 OpExecutionMode %main LocalSize 1 1 1
@ -84,93 +84,92 @@
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float %23 = OpTypeFunction %float %_ptr_Function_float %_ptr_Function_float
%30 = OpConstantNull %float %30 = OpConstantNull %float
%float_0 = OpConstant %float 0
%bool = OpTypeBool %bool = OpTypeBool
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%void = OpTypeVoid %void = OpTypeVoid
%70 = OpTypeFunction %void %69 = OpTypeFunction %void
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%76 = OpConstantNull %int %75 = OpConstantNull %int
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Private_uint = OpTypePointer Private %uint %_ptr_Private_uint = OpTypePointer Private %uint
%int_n10 = OpConstant %int -10 %int_n10 = OpConstant %int -10
%float_n4 = OpConstant %float -4 %float_n4 = OpConstant %float -4
%float_n3 = OpConstant %float -3 %float_n3 = OpConstant %float -3
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%94 = OpTypeFunction %void %v3uint %93 = OpTypeFunction %void %v3uint
%binaryOperation_f1_f1_ = OpFunction %float None %23 %binaryOperation_f1_f1_ = OpFunction %float None %23
%a = OpFunctionParameter %_ptr_Function_float %a = OpFunctionParameter %_ptr_Function_float
%b = OpFunctionParameter %_ptr_Function_float %b = OpFunctionParameter %_ptr_Function_float
%28 = OpLabel %28 = OpLabel
%x_26 = OpVariable %_ptr_Function_float Function %30 %x_26 = OpVariable %_ptr_Function_float Function %30
%32 = OpLoad %float %b %32 = OpLoad %float %b
%34 = OpFOrdEqual %bool %32 %float_0 %33 = OpFOrdEqual %bool %32 %30
OpSelectionMerge %36 None OpSelectionMerge %35 None
OpBranchConditional %34 %37 %36 OpBranchConditional %33 %36 %35
%37 = OpLabel
OpReturnValue %float_1
%36 = OpLabel %36 = OpLabel
%40 = OpLoad %float %b OpReturnValue %float_1
%46 = OpFDiv %float %40 %float_2 %35 = OpLabel
%45 = OpExtInst %float %43 Floor %46 %39 = OpLoad %float %b
%47 = OpFMul %float %float_2 %45 %45 = OpFDiv %float %39 %float_2
%48 = OpFSub %float %40 %47 %44 = OpExtInst %float %42 Floor %45
%42 = OpExtInst %float %43 RoundEven %48 %46 = OpFMul %float %float_2 %44
%49 = OpFOrdEqual %bool %42 %float_1 %47 = OpFSub %float %39 %46
%41 = OpLogicalNot %bool %49 %41 = OpExtInst %float %42 RoundEven %47
OpSelectionMerge %50 None %48 = OpFOrdEqual %bool %41 %float_1
OpBranchConditional %41 %51 %52 %40 = OpLogicalNot %bool %48
%51 = OpLabel OpSelectionMerge %49 None
%54 = OpLoad %float %a OpBranchConditional %40 %50 %51
%56 = OpLoad %float %b
%58 = OpExtInst %float %43 FAbs %54
%57 = OpExtInst %float %43 Pow %58 %56
OpStore %x_26 %57
OpBranch %50
%52 = OpLabel
%60 = OpLoad %float %a
%62 = OpLoad %float %a
%64 = OpLoad %float %b
%65 = OpExtInst %float %43 FSign %60
%67 = OpExtInst %float %43 FAbs %62
%66 = OpExtInst %float %43 Pow %67 %64
%68 = OpFMul %float %65 %66
OpStore %x_26 %68
OpBranch %50
%50 = OpLabel %50 = OpLabel
%69 = OpLoad %float %x_26 %53 = OpLoad %float %a
OpReturnValue %69 %55 = OpLoad %float %b
%57 = OpExtInst %float %42 FAbs %53
%56 = OpExtInst %float %42 Pow %57 %55
OpStore %x_26 %56
OpBranch %49
%51 = OpLabel
%59 = OpLoad %float %a
%61 = OpLoad %float %a
%63 = OpLoad %float %b
%64 = OpExtInst %float %42 FSign %59
%66 = OpExtInst %float %42 FAbs %61
%65 = OpExtInst %float %42 Pow %66 %63
%67 = OpFMul %float %64 %65
OpStore %x_26 %67
OpBranch %49
%49 = OpLabel
%68 = OpLoad %float %x_26
OpReturnValue %68
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %70 %main_1 = OpFunction %void None %69
%73 = OpLabel %72 = OpLabel
%index = OpVariable %_ptr_Function_int Function %76 %index = OpVariable %_ptr_Function_int Function %75
%a_1 = OpVariable %_ptr_Function_int Function %76 %a_1 = OpVariable %_ptr_Function_int Function %75
%param = OpVariable %_ptr_Function_float Function %30 %param = OpVariable %_ptr_Function_float Function %30
%param_1 = OpVariable %_ptr_Function_float Function %30 %param_1 = OpVariable %_ptr_Function_float Function %30
%82 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0 %81 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
%83 = OpLoad %uint %82 %82 = OpLoad %uint %81
%84 = OpBitcast %int %83 %83 = OpBitcast %int %82
OpStore %index %84 OpStore %index %83
OpStore %a_1 %int_n10 OpStore %a_1 %int_n10
%86 = OpLoad %int %index %85 = OpLoad %int %index
OpStore %param %float_n4 OpStore %param %float_n4
OpStore %param_1 %float_n3 OpStore %param_1 %float_n3
%89 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1 %88 = OpFunctionCall %float %binaryOperation_f1_f1_ %param %param_1
%93 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %86 %92 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %85
OpStore %93 %89 OpStore %92 %88
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %void None %94 %main_inner = OpFunction %void None %93
%gl_GlobalInvocationID_param = OpFunctionParameter %v3uint %gl_GlobalInvocationID_param = OpFunctionParameter %v3uint
%97 = OpLabel %96 = OpLabel
OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param OpStore %gl_GlobalInvocationID %gl_GlobalInvocationID_param
%98 = OpFunctionCall %void %main_1 %97 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %70 %main = OpFunction %void None %69
%100 = OpLabel %99 = OpLabel
%102 = OpLoad %v3uint %gl_GlobalInvocationID_param_1 %101 = OpLoad %v3uint %gl_GlobalInvocationID_param_1
%101 = OpFunctionCall %void %main_inner %102 %100 = OpFunctionCall %void %main_inner %101
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,10 +1,10 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 47 ; Bound: 45
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%23 = OpExtInstImport "GLSL.std.450" %21 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %idx_1 OpEntryPoint GLCompute %main "main" %idx_1
OpExecutionMode %main LocalSize 1 1 1 OpExecutionMode %main LocalSize 1 1 1
@ -35,48 +35,46 @@
%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S %_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
%io = OpVariable %_ptr_StorageBuffer_S StorageBuffer %io = OpVariable %_ptr_StorageBuffer_S StorageBuffer
%9 = OpTypeFunction %v3float %uint %v3float %9 = OpTypeFunction %v3float %uint %v3float
%float_0 = OpConstant %float 0 %14 = OpConstantNull %v3float
%15 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%18 = OpConstantNull %v3float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%void = OpTypeVoid %void = OpTypeVoid
%27 = OpTypeFunction %void %uint %25 = OpTypeFunction %void %uint
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float %_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
%42 = OpTypeFunction %void %40 = OpTypeFunction %void
%Bad = OpFunction %v3float None %9 %Bad = OpFunction %v3float None %9
%index = OpFunctionParameter %uint %index = OpFunctionParameter %uint
%rd = OpFunctionParameter %v3float %rd = OpFunctionParameter %v3float
%13 = OpLabel %13 = OpLabel
%normal = OpVariable %_ptr_Function_v3float Function %18 %normal = OpVariable %_ptr_Function_v3float Function %14
OpStore %normal %15 OpStore %normal %14
%20 = OpAccessChain %_ptr_Function_float %normal %index %18 = OpAccessChain %_ptr_Function_float %normal %index
%24 = OpVectorExtractDynamic %float %rd %index %22 = OpVectorExtractDynamic %float %rd %index
%22 = OpExtInst %float %23 FSign %24 %20 = OpExtInst %float %21 FSign %22
%21 = OpFNegate %float %22 %19 = OpFNegate %float %20
OpStore %20 %21 OpStore %18 %19
%26 = OpLoad %v3float %normal %24 = OpLoad %v3float %normal
%25 = OpExtInst %v3float %23 Normalize %26 %23 = OpExtInst %v3float %21 Normalize %24
OpReturnValue %25 OpReturnValue %23
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %void None %27 %main_inner = OpFunction %void None %25
%idx = OpFunctionParameter %uint %idx = OpFunctionParameter %uint
%31 = OpLabel %29 = OpLabel
%35 = OpAccessChain %_ptr_StorageBuffer_uint %io %uint_1 %33 = OpAccessChain %_ptr_StorageBuffer_uint %io %uint_1
%36 = OpLoad %uint %35 %34 = OpLoad %uint %33
%37 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
%38 = OpLoad %v3float %37
%30 = OpFunctionCall %v3float %Bad %34 %38
%39 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0 %39 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
%40 = OpLoad %v3float %39 OpStore %39 %30
%32 = OpFunctionCall %v3float %Bad %36 %40
%41 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
OpStore %41 %32
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %42 %main = OpFunction %void None %40
%44 = OpLabel %42 = OpLabel
%46 = OpLoad %uint %idx_1 %44 = OpLoad %uint %idx_1
%45 = OpFunctionCall %void %main_inner %46 %43 = OpFunctionCall %void %main_inner %44
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -16,7 +16,7 @@
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%10 = OpConstantNull %int %10 = OpConstantNull %int
%bool = OpTypeBool %bool = OpTypeBool
%false = OpConstantFalse %bool %17 = OpConstantNull %bool
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
OpReturn OpReturn
@ -29,7 +29,7 @@
OpLoopMerge %12 %13 None OpLoopMerge %12 %13 None
OpBranch %14 OpBranch %14
%14 = OpLabel %14 = OpLabel
%15 = OpLogicalNot %bool %false %15 = OpLogicalNot %bool %17
OpSelectionMerge %18 None OpSelectionMerge %18 None
OpBranchConditional %15 %19 %18 OpBranchConditional %15 %19 %18
%19 = OpLabel %19 = OpLabel

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 30 ; Bound: 29
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -19,33 +19,32 @@
%5 = OpConstantNull %v4float %5 = OpConstantNull %v4float
%value = OpVariable %_ptr_Output_v4float Output %5 %value = OpVariable %_ptr_Output_v4float Output %5
%6 = OpTypeFunction %v4float %6 = OpTypeFunction %v4float
%float_0 = OpConstant %float 0 %9 = OpConstantNull %float
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%12 = OpConstantNull %float
%v3float = OpTypeVector %float 3 %v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%18 = OpConstantNull %v3float %17 = OpConstantNull %v3float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%void = OpTypeVoid %void = OpTypeVoid
%25 = OpTypeFunction %void %24 = OpTypeFunction %void
%frag_main_inner = OpFunction %v4float None %6 %frag_main_inner = OpFunction %v4float None %6
%8 = OpLabel %8 = OpLabel
%b = OpVariable %_ptr_Function_float Function %12 %b = OpVariable %_ptr_Function_float Function %9
%v = OpVariable %_ptr_Function_v3float Function %18 %v = OpVariable %_ptr_Function_v3float Function %17
OpStore %b %float_0 OpStore %b %9
%14 = OpLoad %float %b %13 = OpLoad %float %b
%15 = OpCompositeConstruct %v3float %14 %14 %14 %14 = OpCompositeConstruct %v3float %13 %13 %13
OpStore %v %15 OpStore %v %14
%19 = OpLoad %v3float %v %18 = OpLoad %v3float %v
%20 = OpCompositeExtract %float %19 0 %19 = OpCompositeExtract %float %18 0
%21 = OpCompositeExtract %float %19 1 %20 = OpCompositeExtract %float %18 1
%22 = OpCompositeExtract %float %19 2 %21 = OpCompositeExtract %float %18 2
%24 = OpCompositeConstruct %v4float %20 %21 %22 %float_1 %23 = OpCompositeConstruct %v4float %19 %20 %21 %float_1
OpReturnValue %24 OpReturnValue %23
OpFunctionEnd OpFunctionEnd
%frag_main = OpFunction %void None %25 %frag_main = OpFunction %void None %24
%28 = OpLabel %27 = OpLabel
%29 = OpFunctionCall %v4float %frag_main_inner %28 = OpFunctionCall %v4float %frag_main_inner
OpStore %value %29 OpStore %value %28
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 36 ; Bound: 37
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -49,25 +49,26 @@
%14 = OpTypeFunction %int %14 = OpTypeFunction %int
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%21 = OpConstantNull %uint
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int %_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%void = OpTypeVoid %void = OpTypeVoid
%28 = OpTypeFunction %void %29 = OpTypeFunction %void
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%runTest = OpFunction %int None %14 %runTest = OpFunction %int None %14
%16 = OpLabel %16 = OpLabel
%23 = OpAccessChain %_ptr_Uniform_uint %constants %uint_0 %24 = OpAccessChain %_ptr_Uniform_uint %constants %uint_0
%24 = OpLoad %uint %23 %25 = OpLoad %uint %24
%25 = OpIAdd %uint %uint_0 %24 %26 = OpIAdd %uint %21 %25
%27 = OpAccessChain %_ptr_StorageBuffer_int %s %uint_0 %25 %28 = OpAccessChain %_ptr_StorageBuffer_int %s %uint_0 %26
%17 = OpAtomicLoad %int %27 %uint_1 %uint_0 %17 = OpAtomicLoad %int %28 %uint_1 %uint_0
OpReturnValue %17 OpReturnValue %17
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %28 %main = OpFunction %void None %29
%31 = OpLabel %32 = OpLabel
%32 = OpFunctionCall %int %runTest %33 = OpFunctionCall %int %runTest
%33 = OpBitcast %uint %32 %34 = OpBitcast %uint %33
%35 = OpAccessChain %_ptr_StorageBuffer_uint %result %uint_0 %36 = OpAccessChain %_ptr_StorageBuffer_uint %result %uint_0
OpStore %35 %33 OpStore %36 %34
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 24 ; Bound: 25
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -47,11 +47,12 @@
%uint_0 = OpConstant %uint 0 %uint_0 = OpConstant %uint 0
%_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_uint = OpTypePointer Uniform %uint
%_ptr_Private_uint = OpTypePointer Private %uint %_ptr_Private_uint = OpTypePointer Private %uint
%24 = OpConstantNull %uint
%main = OpFunction %void None %14 %main = OpFunction %void None %14
%17 = OpLabel %17 = OpLabel
%20 = OpAccessChain %_ptr_Uniform_uint %constants %uint_0 %20 = OpAccessChain %_ptr_Uniform_uint %constants %uint_0
%21 = OpLoad %uint %20 %21 = OpLoad %uint %20
%23 = OpAccessChain %_ptr_Private_uint %s %uint_0 %21 %23 = OpAccessChain %_ptr_Private_uint %s %uint_0 %21
OpStore %23 %uint_0 OpStore %23 %24
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 36 ; Bound: 34
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%10 = OpExtInstImport "GLSL.std.450" %10 = OpExtInstImport "GLSL.std.450"
@ -23,12 +23,10 @@
%uint_32 = OpConstant %uint 32 %uint_32 = OpConstant %uint 32
%void = OpTypeVoid %void = OpTypeVoid
%16 = OpTypeFunction %void %16 = OpTypeFunction %void
%int_0 = OpConstant %int 0 %20 = OpConstantNull %int
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%23 = OpConstantNull %int %23 = OpConstantNull %uint
%uint_0 = OpConstant %uint 0
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%27 = OpConstantNull %uint
%tint_extract_bits = OpFunction %int None %1 %tint_extract_bits = OpFunction %int None %1
%v = OpFunctionParameter %int %v = OpFunctionParameter %int
%offset = OpFunctionParameter %uint %offset = OpFunctionParameter %uint
@ -43,20 +41,20 @@
OpFunctionEnd OpFunctionEnd
%f_1 = OpFunction %void None %16 %f_1 = OpFunction %void None %16
%19 = OpLabel %19 = OpLabel
%v_0 = OpVariable %_ptr_Function_int Function %23 %v_0 = OpVariable %_ptr_Function_int Function %20
%offset_1 = OpVariable %_ptr_Function_uint Function %27 %offset_1 = OpVariable %_ptr_Function_uint Function %23
%count_0 = OpVariable %_ptr_Function_uint Function %27 %count_0 = OpVariable %_ptr_Function_uint Function %23
OpStore %v_0 %int_0 OpStore %v_0 %20
OpStore %offset_1 %uint_0 OpStore %offset_1 %23
OpStore %count_0 %uint_0 OpStore %count_0 %23
%29 = OpLoad %int %v_0 %27 = OpLoad %int %v_0
%30 = OpLoad %uint %offset_1 %28 = OpLoad %uint %offset_1
%31 = OpLoad %uint %count_0 %29 = OpLoad %uint %count_0
%32 = OpFunctionCall %int %tint_extract_bits %29 %30 %31 %30 = OpFunctionCall %int %tint_extract_bits %27 %28 %29
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %16 %f = OpFunction %void None %16
%34 = OpLabel %32 = OpLabel
%35 = OpFunctionCall %void %f_1 %33 = OpFunctionCall %void %f_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 32 ; Bound: 31
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%9 = OpExtInstImport "GLSL.std.450" %9 = OpExtInstImport "GLSL.std.450"
@ -22,9 +22,8 @@
%uint_32 = OpConstant %uint 32 %uint_32 = OpConstant %uint 32
%void = OpTypeVoid %void = OpTypeVoid
%15 = OpTypeFunction %void %15 = OpTypeFunction %void
%uint_0 = OpConstant %uint 0 %19 = OpConstantNull %uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%22 = OpConstantNull %uint
%tint_extract_bits = OpFunction %uint None %1 %tint_extract_bits = OpFunction %uint None %1
%v = OpFunctionParameter %uint %v = OpFunctionParameter %uint
%offset = OpFunctionParameter %uint %offset = OpFunctionParameter %uint
@ -39,20 +38,20 @@
OpFunctionEnd OpFunctionEnd
%f_1 = OpFunction %void None %15 %f_1 = OpFunction %void None %15
%18 = OpLabel %18 = OpLabel
%v_0 = OpVariable %_ptr_Function_uint Function %22 %v_0 = OpVariable %_ptr_Function_uint Function %19
%offset_1 = OpVariable %_ptr_Function_uint Function %22 %offset_1 = OpVariable %_ptr_Function_uint Function %19
%count_0 = OpVariable %_ptr_Function_uint Function %22 %count_0 = OpVariable %_ptr_Function_uint Function %19
OpStore %v_0 %uint_0 OpStore %v_0 %19
OpStore %offset_1 %uint_0 OpStore %offset_1 %19
OpStore %count_0 %uint_0 OpStore %count_0 %19
%25 = OpLoad %uint %v_0 %24 = OpLoad %uint %v_0
%26 = OpLoad %uint %offset_1 %25 = OpLoad %uint %offset_1
%27 = OpLoad %uint %count_0 %26 = OpLoad %uint %count_0
%28 = OpFunctionCall %uint %tint_extract_bits %25 %26 %27 %27 = OpFunctionCall %uint %tint_extract_bits %24 %25 %26
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %15 %f = OpFunction %void None %15
%30 = OpLabel %29 = OpLabel
%31 = OpFunctionCall %void %f_1 %30 = OpFunctionCall %void %f_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 36 ; Bound: 35
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%11 = OpExtInstImport "GLSL.std.450" %11 = OpExtInstImport "GLSL.std.450"
@ -26,9 +26,8 @@
%17 = OpTypeFunction %void %17 = OpTypeFunction %void
%21 = OpConstantNull %v3int %21 = OpConstantNull %v3int
%_ptr_Function_v3int = OpTypePointer Function %v3int %_ptr_Function_v3int = OpTypePointer Function %v3int
%uint_0 = OpConstant %uint 0 %24 = OpConstantNull %uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%27 = OpConstantNull %uint
%tint_extract_bits = OpFunction %v3int None %1 %tint_extract_bits = OpFunction %v3int None %1
%v = OpFunctionParameter %v3int %v = OpFunctionParameter %v3int
%offset = OpFunctionParameter %uint %offset = OpFunctionParameter %uint
@ -44,19 +43,19 @@
%f_1 = OpFunction %void None %17 %f_1 = OpFunction %void None %17
%20 = OpLabel %20 = OpLabel
%v_0 = OpVariable %_ptr_Function_v3int Function %21 %v_0 = OpVariable %_ptr_Function_v3int Function %21
%offset_1 = OpVariable %_ptr_Function_uint Function %27 %offset_1 = OpVariable %_ptr_Function_uint Function %24
%count_0 = OpVariable %_ptr_Function_uint Function %27 %count_0 = OpVariable %_ptr_Function_uint Function %24
OpStore %v_0 %21 OpStore %v_0 %21
OpStore %offset_1 %uint_0 OpStore %offset_1 %24
OpStore %count_0 %uint_0 OpStore %count_0 %24
%29 = OpLoad %v3int %v_0 %28 = OpLoad %v3int %v_0
%30 = OpLoad %uint %offset_1 %29 = OpLoad %uint %offset_1
%31 = OpLoad %uint %count_0 %30 = OpLoad %uint %count_0
%32 = OpFunctionCall %v3int %tint_extract_bits %29 %30 %31 %31 = OpFunctionCall %v3int %tint_extract_bits %28 %29 %30
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %17 %f = OpFunction %void None %17
%34 = OpLabel %33 = OpLabel
%35 = OpFunctionCall %void %f_1 %34 = OpFunctionCall %void %f_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 35 ; Bound: 34
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%10 = OpExtInstImport "GLSL.std.450" %10 = OpExtInstImport "GLSL.std.450"
@ -25,9 +25,8 @@
%16 = OpTypeFunction %void %16 = OpTypeFunction %void
%20 = OpConstantNull %v3uint %20 = OpConstantNull %v3uint
%_ptr_Function_v3uint = OpTypePointer Function %v3uint %_ptr_Function_v3uint = OpTypePointer Function %v3uint
%uint_0 = OpConstant %uint 0 %23 = OpConstantNull %uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%26 = OpConstantNull %uint
%tint_extract_bits = OpFunction %v3uint None %1 %tint_extract_bits = OpFunction %v3uint None %1
%v = OpFunctionParameter %v3uint %v = OpFunctionParameter %v3uint
%offset = OpFunctionParameter %uint %offset = OpFunctionParameter %uint
@ -43,19 +42,19 @@
%f_1 = OpFunction %void None %16 %f_1 = OpFunction %void None %16
%19 = OpLabel %19 = OpLabel
%v_0 = OpVariable %_ptr_Function_v3uint Function %20 %v_0 = OpVariable %_ptr_Function_v3uint Function %20
%offset_1 = OpVariable %_ptr_Function_uint Function %26 %offset_1 = OpVariable %_ptr_Function_uint Function %23
%count_0 = OpVariable %_ptr_Function_uint Function %26 %count_0 = OpVariable %_ptr_Function_uint Function %23
OpStore %v_0 %20 OpStore %v_0 %20
OpStore %offset_1 %uint_0 OpStore %offset_1 %23
OpStore %count_0 %uint_0 OpStore %count_0 %23
%28 = OpLoad %v3uint %v_0 %27 = OpLoad %v3uint %v_0
%29 = OpLoad %uint %offset_1 %28 = OpLoad %uint %offset_1
%30 = OpLoad %uint %count_0 %29 = OpLoad %uint %count_0
%31 = OpFunctionCall %v3uint %tint_extract_bits %28 %29 %30 %30 = OpFunctionCall %v3uint %tint_extract_bits %27 %28 %29
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %16 %f = OpFunction %void None %16
%33 = OpLabel %32 = OpLabel
%34 = OpFunctionCall %void %f_1 %33 = OpFunctionCall %void %f_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 82 ; Bound: 81
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -38,7 +38,6 @@
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%bool = OpTypeBool %bool = OpTypeBool
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_0 = OpConstant %uint 0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
@ -48,8 +47,8 @@
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%void = OpTypeVoid %void = OpTypeVoid
%62 = OpTypeFunction %void %61 = OpTypeFunction %void
%68 = OpTypeFunction %v4float %67 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %uint None %9 %tint_count_leading_zeros = OpFunction %uint None %9
%v = OpFunctionParameter %uint %v = OpFunctionParameter %uint
@ -58,67 +57,67 @@
OpStore %x %v OpStore %x %v
%19 = OpLoad %uint %x %19 = OpLoad %uint %x
%21 = OpULessThanEqual %bool %19 %uint_65535 %21 = OpULessThanEqual %bool %19 %uint_65535
%18 = OpSelect %uint %21 %uint_16 %uint_0 %18 = OpSelect %uint %21 %uint_16 %17
%25 = OpLoad %uint %x %24 = OpLoad %uint %x
%26 = OpShiftLeftLogical %uint %25 %18 %25 = OpShiftLeftLogical %uint %24 %18
OpStore %x %26 OpStore %x %25
%28 = OpLoad %uint %x %27 = OpLoad %uint %x
%30 = OpULessThanEqual %bool %28 %uint_16777215 %29 = OpULessThanEqual %bool %27 %uint_16777215
%27 = OpSelect %uint %30 %uint_8 %uint_0 %26 = OpSelect %uint %29 %uint_8 %17
%32 = OpLoad %uint %x %31 = OpLoad %uint %x
%33 = OpShiftLeftLogical %uint %32 %27 %32 = OpShiftLeftLogical %uint %31 %26
OpStore %x %33 OpStore %x %32
%35 = OpLoad %uint %x %34 = OpLoad %uint %x
%37 = OpULessThanEqual %bool %35 %uint_268435455 %36 = OpULessThanEqual %bool %34 %uint_268435455
%34 = OpSelect %uint %37 %uint_4 %uint_0 %33 = OpSelect %uint %36 %uint_4 %17
%39 = OpLoad %uint %x %38 = OpLoad %uint %x
%40 = OpShiftLeftLogical %uint %39 %34 %39 = OpShiftLeftLogical %uint %38 %33
OpStore %x %40 OpStore %x %39
%42 = OpLoad %uint %x %41 = OpLoad %uint %x
%44 = OpULessThanEqual %bool %42 %uint_1073741823 %43 = OpULessThanEqual %bool %41 %uint_1073741823
%41 = OpSelect %uint %44 %uint_2 %uint_0 %40 = OpSelect %uint %43 %uint_2 %17
%46 = OpLoad %uint %x %45 = OpLoad %uint %x
%47 = OpShiftLeftLogical %uint %46 %41 %46 = OpShiftLeftLogical %uint %45 %40
OpStore %x %47 OpStore %x %46
%49 = OpLoad %uint %x %48 = OpLoad %uint %x
%51 = OpULessThanEqual %bool %49 %uint_2147483647 %50 = OpULessThanEqual %bool %48 %uint_2147483647
%48 = OpSelect %uint %51 %uint_1 %uint_0 %47 = OpSelect %uint %50 %uint_1 %17
%54 = OpLoad %uint %x %53 = OpLoad %uint %x
%55 = OpIEqual %bool %54 %uint_0 %54 = OpIEqual %bool %53 %17
%53 = OpSelect %uint %55 %uint_1 %uint_0 %52 = OpSelect %uint %54 %uint_1 %17
%57 = OpBitwiseOr %uint %18 %27 %56 = OpBitwiseOr %uint %18 %26
%58 = OpBitwiseOr %uint %57 %34 %57 = OpBitwiseOr %uint %56 %33
%59 = OpBitwiseOr %uint %58 %41 %58 = OpBitwiseOr %uint %57 %40
%60 = OpBitwiseOr %uint %59 %48 %59 = OpBitwiseOr %uint %58 %47
%61 = OpIAdd %uint %60 %53 %60 = OpIAdd %uint %59 %52
OpReturnValue %61 OpReturnValue %60
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_208d46 = OpFunction %void None %62 %countLeadingZeros_208d46 = OpFunction %void None %61
%65 = OpLabel %64 = OpLabel
%res = OpVariable %_ptr_Function_uint Function %17 %res = OpVariable %_ptr_Function_uint Function %17
%66 = OpFunctionCall %uint %tint_count_leading_zeros %uint_1 %65 = OpFunctionCall %uint %tint_count_leading_zeros %uint_1
OpStore %res %66 OpStore %res %65
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %68 %vertex_main_inner = OpFunction %v4float None %67
%70 = OpLabel %69 = OpLabel
%71 = OpFunctionCall %void %countLeadingZeros_208d46 %70 = OpFunctionCall %void %countLeadingZeros_208d46
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %62 %vertex_main = OpFunction %void None %61
%73 = OpLabel %72 = OpLabel
%74 = OpFunctionCall %v4float %vertex_main_inner %73 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %74 OpStore %value %73
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %62 %fragment_main = OpFunction %void None %61
%77 = OpLabel %76 = OpLabel
%78 = OpFunctionCall %void %countLeadingZeros_208d46 %77 = OpFunctionCall %void %countLeadingZeros_208d46
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %62 %compute_main = OpFunction %void None %61
%80 = OpLabel %79 = OpLabel
%81 = OpFunctionCall %void %countLeadingZeros_208d46 %80 = OpFunctionCall %void %countLeadingZeros_208d46
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 86 ; Bound: 85
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -39,7 +39,6 @@
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%bool = OpTypeBool %bool = OpTypeBool
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_0 = OpConstant %uint 0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
@ -49,11 +48,11 @@
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%void = OpTypeVoid %void = OpTypeVoid
%63 = OpTypeFunction %void %62 = OpTypeFunction %void
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%71 = OpConstantNull %int %70 = OpConstantNull %int
%72 = OpTypeFunction %v4float %71 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %int None %9 %tint_count_leading_zeros = OpFunction %int None %9
%v = OpFunctionParameter %int %v = OpFunctionParameter %int
@ -63,68 +62,68 @@
OpStore %x %14 OpStore %x %14
%20 = OpLoad %uint %x %20 = OpLoad %uint %x
%22 = OpULessThanEqual %bool %20 %uint_65535 %22 = OpULessThanEqual %bool %20 %uint_65535
%19 = OpSelect %uint %22 %uint_16 %uint_0 %19 = OpSelect %uint %22 %uint_16 %18
%26 = OpLoad %uint %x %25 = OpLoad %uint %x
%27 = OpShiftLeftLogical %uint %26 %19 %26 = OpShiftLeftLogical %uint %25 %19
OpStore %x %27 OpStore %x %26
%29 = OpLoad %uint %x %28 = OpLoad %uint %x
%31 = OpULessThanEqual %bool %29 %uint_16777215 %30 = OpULessThanEqual %bool %28 %uint_16777215
%28 = OpSelect %uint %31 %uint_8 %uint_0 %27 = OpSelect %uint %30 %uint_8 %18
%33 = OpLoad %uint %x %32 = OpLoad %uint %x
%34 = OpShiftLeftLogical %uint %33 %28 %33 = OpShiftLeftLogical %uint %32 %27
OpStore %x %34 OpStore %x %33
%36 = OpLoad %uint %x %35 = OpLoad %uint %x
%38 = OpULessThanEqual %bool %36 %uint_268435455 %37 = OpULessThanEqual %bool %35 %uint_268435455
%35 = OpSelect %uint %38 %uint_4 %uint_0 %34 = OpSelect %uint %37 %uint_4 %18
%40 = OpLoad %uint %x %39 = OpLoad %uint %x
%41 = OpShiftLeftLogical %uint %40 %35 %40 = OpShiftLeftLogical %uint %39 %34
OpStore %x %41 OpStore %x %40
%43 = OpLoad %uint %x %42 = OpLoad %uint %x
%45 = OpULessThanEqual %bool %43 %uint_1073741823 %44 = OpULessThanEqual %bool %42 %uint_1073741823
%42 = OpSelect %uint %45 %uint_2 %uint_0 %41 = OpSelect %uint %44 %uint_2 %18
%47 = OpLoad %uint %x %46 = OpLoad %uint %x
%48 = OpShiftLeftLogical %uint %47 %42 %47 = OpShiftLeftLogical %uint %46 %41
OpStore %x %48 OpStore %x %47
%50 = OpLoad %uint %x %49 = OpLoad %uint %x
%52 = OpULessThanEqual %bool %50 %uint_2147483647 %51 = OpULessThanEqual %bool %49 %uint_2147483647
%49 = OpSelect %uint %52 %uint_1 %uint_0 %48 = OpSelect %uint %51 %uint_1 %18
%55 = OpLoad %uint %x %54 = OpLoad %uint %x
%56 = OpIEqual %bool %55 %uint_0 %55 = OpIEqual %bool %54 %18
%54 = OpSelect %uint %56 %uint_1 %uint_0 %53 = OpSelect %uint %55 %uint_1 %18
%58 = OpBitwiseOr %uint %19 %28 %57 = OpBitwiseOr %uint %19 %27
%59 = OpBitwiseOr %uint %58 %35 %58 = OpBitwiseOr %uint %57 %34
%60 = OpBitwiseOr %uint %59 %42 %59 = OpBitwiseOr %uint %58 %41
%61 = OpBitwiseOr %uint %60 %49 %60 = OpBitwiseOr %uint %59 %48
%62 = OpIAdd %uint %61 %54 %61 = OpIAdd %uint %60 %53
%57 = OpBitcast %int %62 %56 = OpBitcast %int %61
OpReturnValue %57 OpReturnValue %56
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_6d4656 = OpFunction %void None %63 %countLeadingZeros_6d4656 = OpFunction %void None %62
%66 = OpLabel %65 = OpLabel
%res = OpVariable %_ptr_Function_int Function %71 %res = OpVariable %_ptr_Function_int Function %70
%67 = OpFunctionCall %int %tint_count_leading_zeros %int_1 %66 = OpFunctionCall %int %tint_count_leading_zeros %int_1
OpStore %res %67 OpStore %res %66
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %72 %vertex_main_inner = OpFunction %v4float None %71
%74 = OpLabel %73 = OpLabel
%75 = OpFunctionCall %void %countLeadingZeros_6d4656 %74 = OpFunctionCall %void %countLeadingZeros_6d4656
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %63 %vertex_main = OpFunction %void None %62
%77 = OpLabel %76 = OpLabel
%78 = OpFunctionCall %v4float %vertex_main_inner %77 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %78 OpStore %value %77
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %63 %fragment_main = OpFunction %void None %62
%81 = OpLabel %80 = OpLabel
%82 = OpFunctionCall %void %countLeadingZeros_6d4656 %81 = OpFunctionCall %void %countLeadingZeros_6d4656
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %63 %compute_main = OpFunction %void None %62
%84 = OpLabel %83 = OpLabel
%85 = OpFunctionCall %void %countLeadingZeros_6d4656 %84 = OpFunctionCall %void %countLeadingZeros_6d4656
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 95 ; Bound: 93
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,27 +42,25 @@
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%27 = OpConstantComposite %v2uint %uint_16 %uint_16 %27 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%29 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%35 = OpConstantComposite %v2uint %uint_16777215 %uint_16777215 %33 = OpConstantComposite %v2uint %uint_16777215 %uint_16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%38 = OpConstantComposite %v2uint %uint_8 %uint_8 %36 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
%44 = OpConstantComposite %v2uint %uint_268435455 %uint_268435455 %42 = OpConstantComposite %v2uint %uint_268435455 %uint_268435455
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%47 = OpConstantComposite %v2uint %uint_4 %uint_4 %45 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_1073741823 = OpConstant %uint 1073741823 %uint_1073741823 = OpConstant %uint 1073741823
%53 = OpConstantComposite %v2uint %uint_1073741823 %uint_1073741823 %51 = OpConstantComposite %v2uint %uint_1073741823 %uint_1073741823
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%56 = OpConstantComposite %v2uint %uint_2 %uint_2 %54 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%62 = OpConstantComposite %v2uint %uint_2147483647 %uint_2147483647 %60 = OpConstantComposite %v2uint %uint_2147483647 %uint_2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%65 = OpConstantComposite %v2uint %uint_1 %uint_1 %63 = OpConstantComposite %v2uint %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%75 = OpTypeFunction %void %73 = OpTypeFunction %void
%81 = OpTypeFunction %v4float %79 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %v2uint None %9 %tint_count_leading_zeros = OpFunction %v2uint None %9
%v = OpFunctionParameter %v2uint %v = OpFunctionParameter %v2uint
@ -71,67 +69,67 @@
OpStore %x %v OpStore %x %v
%20 = OpLoad %v2uint %x %20 = OpLoad %v2uint %x
%23 = OpULessThanEqual %v2bool %20 %22 %23 = OpULessThanEqual %v2bool %20 %22
%19 = OpSelect %v2uint %23 %27 %29 %19 = OpSelect %v2uint %23 %27 %18
%30 = OpLoad %v2uint %x %28 = OpLoad %v2uint %x
%31 = OpShiftLeftLogical %v2uint %30 %19 %29 = OpShiftLeftLogical %v2uint %28 %19
OpStore %x %31 OpStore %x %29
%33 = OpLoad %v2uint %x %31 = OpLoad %v2uint %x
%36 = OpULessThanEqual %v2bool %33 %35 %34 = OpULessThanEqual %v2bool %31 %33
%32 = OpSelect %v2uint %36 %38 %29 %30 = OpSelect %v2uint %34 %36 %18
%39 = OpLoad %v2uint %x %37 = OpLoad %v2uint %x
%40 = OpShiftLeftLogical %v2uint %39 %32 %38 = OpShiftLeftLogical %v2uint %37 %30
OpStore %x %40 OpStore %x %38
%42 = OpLoad %v2uint %x %40 = OpLoad %v2uint %x
%45 = OpULessThanEqual %v2bool %42 %44 %43 = OpULessThanEqual %v2bool %40 %42
%41 = OpSelect %v2uint %45 %47 %29 %39 = OpSelect %v2uint %43 %45 %18
%48 = OpLoad %v2uint %x %46 = OpLoad %v2uint %x
%49 = OpShiftLeftLogical %v2uint %48 %41 %47 = OpShiftLeftLogical %v2uint %46 %39
OpStore %x %49 OpStore %x %47
%51 = OpLoad %v2uint %x %49 = OpLoad %v2uint %x
%54 = OpULessThanEqual %v2bool %51 %53 %52 = OpULessThanEqual %v2bool %49 %51
%50 = OpSelect %v2uint %54 %56 %29 %48 = OpSelect %v2uint %52 %54 %18
%57 = OpLoad %v2uint %x %55 = OpLoad %v2uint %x
%58 = OpShiftLeftLogical %v2uint %57 %50 %56 = OpShiftLeftLogical %v2uint %55 %48
OpStore %x %58 OpStore %x %56
%60 = OpLoad %v2uint %x %58 = OpLoad %v2uint %x
%63 = OpULessThanEqual %v2bool %60 %62 %61 = OpULessThanEqual %v2bool %58 %60
%59 = OpSelect %v2uint %63 %65 %29 %57 = OpSelect %v2uint %61 %63 %18
%67 = OpLoad %v2uint %x %65 = OpLoad %v2uint %x
%68 = OpIEqual %v2bool %67 %29 %66 = OpIEqual %v2bool %65 %18
%66 = OpSelect %v2uint %68 %65 %29 %64 = OpSelect %v2uint %66 %63 %18
%70 = OpBitwiseOr %v2uint %19 %32 %68 = OpBitwiseOr %v2uint %19 %30
%71 = OpBitwiseOr %v2uint %70 %41 %69 = OpBitwiseOr %v2uint %68 %39
%72 = OpBitwiseOr %v2uint %71 %50 %70 = OpBitwiseOr %v2uint %69 %48
%73 = OpBitwiseOr %v2uint %72 %59 %71 = OpBitwiseOr %v2uint %70 %57
%74 = OpIAdd %v2uint %73 %66 %72 = OpIAdd %v2uint %71 %64
OpReturnValue %74 OpReturnValue %72
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_70783f = OpFunction %void None %75 %countLeadingZeros_70783f = OpFunction %void None %73
%78 = OpLabel %76 = OpLabel
%res = OpVariable %_ptr_Function_v2uint Function %18 %res = OpVariable %_ptr_Function_v2uint Function %18
%79 = OpFunctionCall %v2uint %tint_count_leading_zeros %18 %77 = OpFunctionCall %v2uint %tint_count_leading_zeros %18
OpStore %res %79 OpStore %res %77
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %81 %vertex_main_inner = OpFunction %v4float None %79
%83 = OpLabel %81 = OpLabel
%84 = OpFunctionCall %void %countLeadingZeros_70783f %82 = OpFunctionCall %void %countLeadingZeros_70783f
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %75 %vertex_main = OpFunction %void None %73
%86 = OpLabel %84 = OpLabel
%87 = OpFunctionCall %v4float %vertex_main_inner %85 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %87 OpStore %value %85
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %75 %fragment_main = OpFunction %void None %73
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %void %countLeadingZeros_70783f %89 = OpFunctionCall %void %countLeadingZeros_70783f
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %75 %compute_main = OpFunction %void None %73
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %void %countLeadingZeros_70783f %92 = OpFunctionCall %void %countLeadingZeros_70783f
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 99 ; Bound: 97
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -44,29 +44,27 @@
%v3bool = OpTypeVector %bool 3 %v3bool = OpTypeVector %bool 3
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%29 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 %29 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%31 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%37 = OpConstantComposite %v3uint %uint_16777215 %uint_16777215 %uint_16777215 %35 = OpConstantComposite %v3uint %uint_16777215 %uint_16777215 %uint_16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 %38 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
%46 = OpConstantComposite %v3uint %uint_268435455 %uint_268435455 %uint_268435455 %44 = OpConstantComposite %v3uint %uint_268435455 %uint_268435455 %uint_268435455
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%49 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 %47 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_1073741823 = OpConstant %uint 1073741823 %uint_1073741823 = OpConstant %uint 1073741823
%55 = OpConstantComposite %v3uint %uint_1073741823 %uint_1073741823 %uint_1073741823 %53 = OpConstantComposite %v3uint %uint_1073741823 %uint_1073741823 %uint_1073741823
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%58 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 %56 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%64 = OpConstantComposite %v3uint %uint_2147483647 %uint_2147483647 %uint_2147483647 %62 = OpConstantComposite %v3uint %uint_2147483647 %uint_2147483647 %uint_2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%77 = OpTypeFunction %void %75 = OpTypeFunction %void
%82 = OpConstantNull %v3int %80 = OpConstantNull %v3int
%_ptr_Function_v3int = OpTypePointer Function %v3int %_ptr_Function_v3int = OpTypePointer Function %v3int
%85 = OpTypeFunction %v4float %83 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %v3int None %9 %tint_count_leading_zeros = OpFunction %v3int None %9
%v = OpFunctionParameter %v3int %v = OpFunctionParameter %v3int
@ -76,68 +74,68 @@
OpStore %x %15 OpStore %x %15
%22 = OpLoad %v3uint %x %22 = OpLoad %v3uint %x
%25 = OpULessThanEqual %v3bool %22 %24 %25 = OpULessThanEqual %v3bool %22 %24
%21 = OpSelect %v3uint %25 %29 %31 %21 = OpSelect %v3uint %25 %29 %20
%32 = OpLoad %v3uint %x %30 = OpLoad %v3uint %x
%33 = OpShiftLeftLogical %v3uint %32 %21 %31 = OpShiftLeftLogical %v3uint %30 %21
OpStore %x %33 OpStore %x %31
%35 = OpLoad %v3uint %x %33 = OpLoad %v3uint %x
%38 = OpULessThanEqual %v3bool %35 %37 %36 = OpULessThanEqual %v3bool %33 %35
%34 = OpSelect %v3uint %38 %40 %31 %32 = OpSelect %v3uint %36 %38 %20
%41 = OpLoad %v3uint %x %39 = OpLoad %v3uint %x
%42 = OpShiftLeftLogical %v3uint %41 %34 %40 = OpShiftLeftLogical %v3uint %39 %32
OpStore %x %42 OpStore %x %40
%44 = OpLoad %v3uint %x %42 = OpLoad %v3uint %x
%47 = OpULessThanEqual %v3bool %44 %46 %45 = OpULessThanEqual %v3bool %42 %44
%43 = OpSelect %v3uint %47 %49 %31 %41 = OpSelect %v3uint %45 %47 %20
%50 = OpLoad %v3uint %x %48 = OpLoad %v3uint %x
%51 = OpShiftLeftLogical %v3uint %50 %43 %49 = OpShiftLeftLogical %v3uint %48 %41
OpStore %x %51 OpStore %x %49
%53 = OpLoad %v3uint %x %51 = OpLoad %v3uint %x
%56 = OpULessThanEqual %v3bool %53 %55 %54 = OpULessThanEqual %v3bool %51 %53
%52 = OpSelect %v3uint %56 %58 %31 %50 = OpSelect %v3uint %54 %56 %20
%59 = OpLoad %v3uint %x %57 = OpLoad %v3uint %x
%60 = OpShiftLeftLogical %v3uint %59 %52 %58 = OpShiftLeftLogical %v3uint %57 %50
OpStore %x %60 OpStore %x %58
%62 = OpLoad %v3uint %x %60 = OpLoad %v3uint %x
%65 = OpULessThanEqual %v3bool %62 %64 %63 = OpULessThanEqual %v3bool %60 %62
%61 = OpSelect %v3uint %65 %67 %31 %59 = OpSelect %v3uint %63 %65 %20
%69 = OpLoad %v3uint %x %67 = OpLoad %v3uint %x
%70 = OpIEqual %v3bool %69 %31 %68 = OpIEqual %v3bool %67 %20
%68 = OpSelect %v3uint %70 %67 %31 %66 = OpSelect %v3uint %68 %65 %20
%72 = OpBitwiseOr %v3uint %21 %34 %70 = OpBitwiseOr %v3uint %21 %32
%73 = OpBitwiseOr %v3uint %72 %43 %71 = OpBitwiseOr %v3uint %70 %41
%74 = OpBitwiseOr %v3uint %73 %52 %72 = OpBitwiseOr %v3uint %71 %50
%75 = OpBitwiseOr %v3uint %74 %61 %73 = OpBitwiseOr %v3uint %72 %59
%76 = OpIAdd %v3uint %75 %68 %74 = OpIAdd %v3uint %73 %66
%71 = OpBitcast %v3int %76 %69 = OpBitcast %v3int %74
OpReturnValue %71 OpReturnValue %69
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_7c38a6 = OpFunction %void None %77 %countLeadingZeros_7c38a6 = OpFunction %void None %75
%80 = OpLabel %78 = OpLabel
%res = OpVariable %_ptr_Function_v3int Function %82 %res = OpVariable %_ptr_Function_v3int Function %80
%81 = OpFunctionCall %v3int %tint_count_leading_zeros %82 %79 = OpFunctionCall %v3int %tint_count_leading_zeros %80
OpStore %res %81 OpStore %res %79
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %85 %vertex_main_inner = OpFunction %v4float None %83
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %void %countLeadingZeros_7c38a6 %86 = OpFunctionCall %void %countLeadingZeros_7c38a6
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %77 %vertex_main = OpFunction %void None %75
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %v4float %vertex_main_inner %89 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %91 OpStore %value %89
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %77 %fragment_main = OpFunction %void None %75
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %countLeadingZeros_7c38a6 %93 = OpFunctionCall %void %countLeadingZeros_7c38a6
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %77 %compute_main = OpFunction %void None %75
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %countLeadingZeros_7c38a6 %96 = OpFunctionCall %void %countLeadingZeros_7c38a6
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 99 ; Bound: 97
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -44,29 +44,27 @@
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%29 = OpConstantComposite %v2uint %uint_16 %uint_16 %29 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%31 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%37 = OpConstantComposite %v2uint %uint_16777215 %uint_16777215 %35 = OpConstantComposite %v2uint %uint_16777215 %uint_16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v2uint %uint_8 %uint_8 %38 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
%46 = OpConstantComposite %v2uint %uint_268435455 %uint_268435455 %44 = OpConstantComposite %v2uint %uint_268435455 %uint_268435455
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%49 = OpConstantComposite %v2uint %uint_4 %uint_4 %47 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_1073741823 = OpConstant %uint 1073741823 %uint_1073741823 = OpConstant %uint 1073741823
%55 = OpConstantComposite %v2uint %uint_1073741823 %uint_1073741823 %53 = OpConstantComposite %v2uint %uint_1073741823 %uint_1073741823
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%58 = OpConstantComposite %v2uint %uint_2 %uint_2 %56 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%64 = OpConstantComposite %v2uint %uint_2147483647 %uint_2147483647 %62 = OpConstantComposite %v2uint %uint_2147483647 %uint_2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v2uint %uint_1 %uint_1 %65 = OpConstantComposite %v2uint %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%77 = OpTypeFunction %void %75 = OpTypeFunction %void
%82 = OpConstantNull %v2int %80 = OpConstantNull %v2int
%_ptr_Function_v2int = OpTypePointer Function %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int
%85 = OpTypeFunction %v4float %83 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %v2int None %9 %tint_count_leading_zeros = OpFunction %v2int None %9
%v = OpFunctionParameter %v2int %v = OpFunctionParameter %v2int
@ -76,68 +74,68 @@
OpStore %x %15 OpStore %x %15
%22 = OpLoad %v2uint %x %22 = OpLoad %v2uint %x
%25 = OpULessThanEqual %v2bool %22 %24 %25 = OpULessThanEqual %v2bool %22 %24
%21 = OpSelect %v2uint %25 %29 %31 %21 = OpSelect %v2uint %25 %29 %20
%32 = OpLoad %v2uint %x %30 = OpLoad %v2uint %x
%33 = OpShiftLeftLogical %v2uint %32 %21 %31 = OpShiftLeftLogical %v2uint %30 %21
OpStore %x %33 OpStore %x %31
%35 = OpLoad %v2uint %x %33 = OpLoad %v2uint %x
%38 = OpULessThanEqual %v2bool %35 %37 %36 = OpULessThanEqual %v2bool %33 %35
%34 = OpSelect %v2uint %38 %40 %31 %32 = OpSelect %v2uint %36 %38 %20
%41 = OpLoad %v2uint %x %39 = OpLoad %v2uint %x
%42 = OpShiftLeftLogical %v2uint %41 %34 %40 = OpShiftLeftLogical %v2uint %39 %32
OpStore %x %42 OpStore %x %40
%44 = OpLoad %v2uint %x %42 = OpLoad %v2uint %x
%47 = OpULessThanEqual %v2bool %44 %46 %45 = OpULessThanEqual %v2bool %42 %44
%43 = OpSelect %v2uint %47 %49 %31 %41 = OpSelect %v2uint %45 %47 %20
%50 = OpLoad %v2uint %x %48 = OpLoad %v2uint %x
%51 = OpShiftLeftLogical %v2uint %50 %43 %49 = OpShiftLeftLogical %v2uint %48 %41
OpStore %x %51 OpStore %x %49
%53 = OpLoad %v2uint %x %51 = OpLoad %v2uint %x
%56 = OpULessThanEqual %v2bool %53 %55 %54 = OpULessThanEqual %v2bool %51 %53
%52 = OpSelect %v2uint %56 %58 %31 %50 = OpSelect %v2uint %54 %56 %20
%59 = OpLoad %v2uint %x %57 = OpLoad %v2uint %x
%60 = OpShiftLeftLogical %v2uint %59 %52 %58 = OpShiftLeftLogical %v2uint %57 %50
OpStore %x %60 OpStore %x %58
%62 = OpLoad %v2uint %x %60 = OpLoad %v2uint %x
%65 = OpULessThanEqual %v2bool %62 %64 %63 = OpULessThanEqual %v2bool %60 %62
%61 = OpSelect %v2uint %65 %67 %31 %59 = OpSelect %v2uint %63 %65 %20
%69 = OpLoad %v2uint %x %67 = OpLoad %v2uint %x
%70 = OpIEqual %v2bool %69 %31 %68 = OpIEqual %v2bool %67 %20
%68 = OpSelect %v2uint %70 %67 %31 %66 = OpSelect %v2uint %68 %65 %20
%72 = OpBitwiseOr %v2uint %21 %34 %70 = OpBitwiseOr %v2uint %21 %32
%73 = OpBitwiseOr %v2uint %72 %43 %71 = OpBitwiseOr %v2uint %70 %41
%74 = OpBitwiseOr %v2uint %73 %52 %72 = OpBitwiseOr %v2uint %71 %50
%75 = OpBitwiseOr %v2uint %74 %61 %73 = OpBitwiseOr %v2uint %72 %59
%76 = OpIAdd %v2uint %75 %68 %74 = OpIAdd %v2uint %73 %66
%71 = OpBitcast %v2int %76 %69 = OpBitcast %v2int %74
OpReturnValue %71 OpReturnValue %69
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_858d40 = OpFunction %void None %77 %countLeadingZeros_858d40 = OpFunction %void None %75
%80 = OpLabel %78 = OpLabel
%res = OpVariable %_ptr_Function_v2int Function %82 %res = OpVariable %_ptr_Function_v2int Function %80
%81 = OpFunctionCall %v2int %tint_count_leading_zeros %82 %79 = OpFunctionCall %v2int %tint_count_leading_zeros %80
OpStore %res %81 OpStore %res %79
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %85 %vertex_main_inner = OpFunction %v4float None %83
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %void %countLeadingZeros_858d40 %86 = OpFunctionCall %void %countLeadingZeros_858d40
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %77 %vertex_main = OpFunction %void None %75
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %v4float %vertex_main_inner %89 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %91 OpStore %value %89
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %77 %fragment_main = OpFunction %void None %75
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %countLeadingZeros_858d40 %93 = OpFunctionCall %void %countLeadingZeros_858d40
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %77 %compute_main = OpFunction %void None %75
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %countLeadingZeros_858d40 %96 = OpFunctionCall %void %countLeadingZeros_858d40
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 95 ; Bound: 93
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,27 +42,25 @@
%v3bool = OpTypeVector %bool 3 %v3bool = OpTypeVector %bool 3
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%27 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 %27 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%29 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%35 = OpConstantComposite %v3uint %uint_16777215 %uint_16777215 %uint_16777215 %33 = OpConstantComposite %v3uint %uint_16777215 %uint_16777215 %uint_16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%38 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 %36 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
%44 = OpConstantComposite %v3uint %uint_268435455 %uint_268435455 %uint_268435455 %42 = OpConstantComposite %v3uint %uint_268435455 %uint_268435455 %uint_268435455
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%47 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 %45 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_1073741823 = OpConstant %uint 1073741823 %uint_1073741823 = OpConstant %uint 1073741823
%53 = OpConstantComposite %v3uint %uint_1073741823 %uint_1073741823 %uint_1073741823 %51 = OpConstantComposite %v3uint %uint_1073741823 %uint_1073741823 %uint_1073741823
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%56 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 %54 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%62 = OpConstantComposite %v3uint %uint_2147483647 %uint_2147483647 %uint_2147483647 %60 = OpConstantComposite %v3uint %uint_2147483647 %uint_2147483647 %uint_2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%65 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 %63 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%75 = OpTypeFunction %void %73 = OpTypeFunction %void
%81 = OpTypeFunction %v4float %79 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %v3uint None %9 %tint_count_leading_zeros = OpFunction %v3uint None %9
%v = OpFunctionParameter %v3uint %v = OpFunctionParameter %v3uint
@ -71,67 +69,67 @@
OpStore %x %v OpStore %x %v
%20 = OpLoad %v3uint %x %20 = OpLoad %v3uint %x
%23 = OpULessThanEqual %v3bool %20 %22 %23 = OpULessThanEqual %v3bool %20 %22
%19 = OpSelect %v3uint %23 %27 %29 %19 = OpSelect %v3uint %23 %27 %18
%30 = OpLoad %v3uint %x %28 = OpLoad %v3uint %x
%31 = OpShiftLeftLogical %v3uint %30 %19 %29 = OpShiftLeftLogical %v3uint %28 %19
OpStore %x %31 OpStore %x %29
%33 = OpLoad %v3uint %x %31 = OpLoad %v3uint %x
%36 = OpULessThanEqual %v3bool %33 %35 %34 = OpULessThanEqual %v3bool %31 %33
%32 = OpSelect %v3uint %36 %38 %29 %30 = OpSelect %v3uint %34 %36 %18
%39 = OpLoad %v3uint %x %37 = OpLoad %v3uint %x
%40 = OpShiftLeftLogical %v3uint %39 %32 %38 = OpShiftLeftLogical %v3uint %37 %30
OpStore %x %40 OpStore %x %38
%42 = OpLoad %v3uint %x %40 = OpLoad %v3uint %x
%45 = OpULessThanEqual %v3bool %42 %44 %43 = OpULessThanEqual %v3bool %40 %42
%41 = OpSelect %v3uint %45 %47 %29 %39 = OpSelect %v3uint %43 %45 %18
%48 = OpLoad %v3uint %x %46 = OpLoad %v3uint %x
%49 = OpShiftLeftLogical %v3uint %48 %41 %47 = OpShiftLeftLogical %v3uint %46 %39
OpStore %x %49 OpStore %x %47
%51 = OpLoad %v3uint %x %49 = OpLoad %v3uint %x
%54 = OpULessThanEqual %v3bool %51 %53 %52 = OpULessThanEqual %v3bool %49 %51
%50 = OpSelect %v3uint %54 %56 %29 %48 = OpSelect %v3uint %52 %54 %18
%57 = OpLoad %v3uint %x %55 = OpLoad %v3uint %x
%58 = OpShiftLeftLogical %v3uint %57 %50 %56 = OpShiftLeftLogical %v3uint %55 %48
OpStore %x %58 OpStore %x %56
%60 = OpLoad %v3uint %x %58 = OpLoad %v3uint %x
%63 = OpULessThanEqual %v3bool %60 %62 %61 = OpULessThanEqual %v3bool %58 %60
%59 = OpSelect %v3uint %63 %65 %29 %57 = OpSelect %v3uint %61 %63 %18
%67 = OpLoad %v3uint %x %65 = OpLoad %v3uint %x
%68 = OpIEqual %v3bool %67 %29 %66 = OpIEqual %v3bool %65 %18
%66 = OpSelect %v3uint %68 %65 %29 %64 = OpSelect %v3uint %66 %63 %18
%70 = OpBitwiseOr %v3uint %19 %32 %68 = OpBitwiseOr %v3uint %19 %30
%71 = OpBitwiseOr %v3uint %70 %41 %69 = OpBitwiseOr %v3uint %68 %39
%72 = OpBitwiseOr %v3uint %71 %50 %70 = OpBitwiseOr %v3uint %69 %48
%73 = OpBitwiseOr %v3uint %72 %59 %71 = OpBitwiseOr %v3uint %70 %57
%74 = OpIAdd %v3uint %73 %66 %72 = OpIAdd %v3uint %71 %64
OpReturnValue %74 OpReturnValue %72
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_ab6345 = OpFunction %void None %75 %countLeadingZeros_ab6345 = OpFunction %void None %73
%78 = OpLabel %76 = OpLabel
%res = OpVariable %_ptr_Function_v3uint Function %18 %res = OpVariable %_ptr_Function_v3uint Function %18
%79 = OpFunctionCall %v3uint %tint_count_leading_zeros %18 %77 = OpFunctionCall %v3uint %tint_count_leading_zeros %18
OpStore %res %79 OpStore %res %77
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %81 %vertex_main_inner = OpFunction %v4float None %79
%83 = OpLabel %81 = OpLabel
%84 = OpFunctionCall %void %countLeadingZeros_ab6345 %82 = OpFunctionCall %void %countLeadingZeros_ab6345
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %75 %vertex_main = OpFunction %void None %73
%86 = OpLabel %84 = OpLabel
%87 = OpFunctionCall %v4float %vertex_main_inner %85 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %87 OpStore %value %85
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %75 %fragment_main = OpFunction %void None %73
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %void %countLeadingZeros_ab6345 %89 = OpFunctionCall %void %countLeadingZeros_ab6345
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %75 %compute_main = OpFunction %void None %73
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %void %countLeadingZeros_ab6345 %92 = OpFunctionCall %void %countLeadingZeros_ab6345
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 99 ; Bound: 97
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -44,29 +44,27 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%29 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %29 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%31 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%37 = OpConstantComposite %v4uint %uint_16777215 %uint_16777215 %uint_16777215 %uint_16777215 %35 = OpConstantComposite %v4uint %uint_16777215 %uint_16777215 %uint_16777215 %uint_16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %38 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
%46 = OpConstantComposite %v4uint %uint_268435455 %uint_268435455 %uint_268435455 %uint_268435455 %44 = OpConstantComposite %v4uint %uint_268435455 %uint_268435455 %uint_268435455 %uint_268435455
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%49 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %47 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_1073741823 = OpConstant %uint 1073741823 %uint_1073741823 = OpConstant %uint 1073741823
%55 = OpConstantComposite %v4uint %uint_1073741823 %uint_1073741823 %uint_1073741823 %uint_1073741823 %53 = OpConstantComposite %v4uint %uint_1073741823 %uint_1073741823 %uint_1073741823 %uint_1073741823
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%58 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %56 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%64 = OpConstantComposite %v4uint %uint_2147483647 %uint_2147483647 %uint_2147483647 %uint_2147483647 %62 = OpConstantComposite %v4uint %uint_2147483647 %uint_2147483647 %uint_2147483647 %uint_2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%77 = OpTypeFunction %void %75 = OpTypeFunction %void
%82 = OpConstantNull %v4int %80 = OpConstantNull %v4int
%_ptr_Function_v4int = OpTypePointer Function %v4int %_ptr_Function_v4int = OpTypePointer Function %v4int
%85 = OpTypeFunction %v4float %83 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %v4int None %9 %tint_count_leading_zeros = OpFunction %v4int None %9
%v = OpFunctionParameter %v4int %v = OpFunctionParameter %v4int
@ -76,68 +74,68 @@
OpStore %x %15 OpStore %x %15
%22 = OpLoad %v4uint %x %22 = OpLoad %v4uint %x
%25 = OpULessThanEqual %v4bool %22 %24 %25 = OpULessThanEqual %v4bool %22 %24
%21 = OpSelect %v4uint %25 %29 %31 %21 = OpSelect %v4uint %25 %29 %20
%32 = OpLoad %v4uint %x %30 = OpLoad %v4uint %x
%33 = OpShiftLeftLogical %v4uint %32 %21 %31 = OpShiftLeftLogical %v4uint %30 %21
OpStore %x %33 OpStore %x %31
%35 = OpLoad %v4uint %x %33 = OpLoad %v4uint %x
%38 = OpULessThanEqual %v4bool %35 %37 %36 = OpULessThanEqual %v4bool %33 %35
%34 = OpSelect %v4uint %38 %40 %31 %32 = OpSelect %v4uint %36 %38 %20
%41 = OpLoad %v4uint %x %39 = OpLoad %v4uint %x
%42 = OpShiftLeftLogical %v4uint %41 %34 %40 = OpShiftLeftLogical %v4uint %39 %32
OpStore %x %42 OpStore %x %40
%44 = OpLoad %v4uint %x %42 = OpLoad %v4uint %x
%47 = OpULessThanEqual %v4bool %44 %46 %45 = OpULessThanEqual %v4bool %42 %44
%43 = OpSelect %v4uint %47 %49 %31 %41 = OpSelect %v4uint %45 %47 %20
%50 = OpLoad %v4uint %x %48 = OpLoad %v4uint %x
%51 = OpShiftLeftLogical %v4uint %50 %43 %49 = OpShiftLeftLogical %v4uint %48 %41
OpStore %x %51 OpStore %x %49
%53 = OpLoad %v4uint %x %51 = OpLoad %v4uint %x
%56 = OpULessThanEqual %v4bool %53 %55 %54 = OpULessThanEqual %v4bool %51 %53
%52 = OpSelect %v4uint %56 %58 %31 %50 = OpSelect %v4uint %54 %56 %20
%59 = OpLoad %v4uint %x %57 = OpLoad %v4uint %x
%60 = OpShiftLeftLogical %v4uint %59 %52 %58 = OpShiftLeftLogical %v4uint %57 %50
OpStore %x %60 OpStore %x %58
%62 = OpLoad %v4uint %x %60 = OpLoad %v4uint %x
%65 = OpULessThanEqual %v4bool %62 %64 %63 = OpULessThanEqual %v4bool %60 %62
%61 = OpSelect %v4uint %65 %67 %31 %59 = OpSelect %v4uint %63 %65 %20
%69 = OpLoad %v4uint %x %67 = OpLoad %v4uint %x
%70 = OpIEqual %v4bool %69 %31 %68 = OpIEqual %v4bool %67 %20
%68 = OpSelect %v4uint %70 %67 %31 %66 = OpSelect %v4uint %68 %65 %20
%72 = OpBitwiseOr %v4uint %21 %34 %70 = OpBitwiseOr %v4uint %21 %32
%73 = OpBitwiseOr %v4uint %72 %43 %71 = OpBitwiseOr %v4uint %70 %41
%74 = OpBitwiseOr %v4uint %73 %52 %72 = OpBitwiseOr %v4uint %71 %50
%75 = OpBitwiseOr %v4uint %74 %61 %73 = OpBitwiseOr %v4uint %72 %59
%76 = OpIAdd %v4uint %75 %68 %74 = OpIAdd %v4uint %73 %66
%71 = OpBitcast %v4int %76 %69 = OpBitcast %v4int %74
OpReturnValue %71 OpReturnValue %69
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_eab32b = OpFunction %void None %77 %countLeadingZeros_eab32b = OpFunction %void None %75
%80 = OpLabel %78 = OpLabel
%res = OpVariable %_ptr_Function_v4int Function %82 %res = OpVariable %_ptr_Function_v4int Function %80
%81 = OpFunctionCall %v4int %tint_count_leading_zeros %82 %79 = OpFunctionCall %v4int %tint_count_leading_zeros %80
OpStore %res %81 OpStore %res %79
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %85 %vertex_main_inner = OpFunction %v4float None %83
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %void %countLeadingZeros_eab32b %86 = OpFunctionCall %void %countLeadingZeros_eab32b
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %77 %vertex_main = OpFunction %void None %75
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %v4float %vertex_main_inner %89 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %91 OpStore %value %89
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %77 %fragment_main = OpFunction %void None %75
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %countLeadingZeros_eab32b %93 = OpFunctionCall %void %countLeadingZeros_eab32b
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %77 %compute_main = OpFunction %void None %75
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %countLeadingZeros_eab32b %96 = OpFunctionCall %void %countLeadingZeros_eab32b
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 95 ; Bound: 93
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,27 +42,25 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%27 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %27 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%29 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_16777215 = OpConstant %uint 16777215 %uint_16777215 = OpConstant %uint 16777215
%35 = OpConstantComposite %v4uint %uint_16777215 %uint_16777215 %uint_16777215 %uint_16777215 %33 = OpConstantComposite %v4uint %uint_16777215 %uint_16777215 %uint_16777215 %uint_16777215
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%38 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %36 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_268435455 = OpConstant %uint 268435455 %uint_268435455 = OpConstant %uint 268435455
%44 = OpConstantComposite %v4uint %uint_268435455 %uint_268435455 %uint_268435455 %uint_268435455 %42 = OpConstantComposite %v4uint %uint_268435455 %uint_268435455 %uint_268435455 %uint_268435455
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%47 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %45 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_1073741823 = OpConstant %uint 1073741823 %uint_1073741823 = OpConstant %uint 1073741823
%53 = OpConstantComposite %v4uint %uint_1073741823 %uint_1073741823 %uint_1073741823 %uint_1073741823 %51 = OpConstantComposite %v4uint %uint_1073741823 %uint_1073741823 %uint_1073741823 %uint_1073741823
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%56 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %54 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_2147483647 = OpConstant %uint 2147483647 %uint_2147483647 = OpConstant %uint 2147483647
%62 = OpConstantComposite %v4uint %uint_2147483647 %uint_2147483647 %uint_2147483647 %uint_2147483647 %60 = OpConstantComposite %v4uint %uint_2147483647 %uint_2147483647 %uint_2147483647 %uint_2147483647
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%65 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %63 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%75 = OpTypeFunction %void %73 = OpTypeFunction %void
%81 = OpTypeFunction %v4float %79 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_leading_zeros = OpFunction %v4uint None %9 %tint_count_leading_zeros = OpFunction %v4uint None %9
%v = OpFunctionParameter %v4uint %v = OpFunctionParameter %v4uint
@ -71,67 +69,67 @@
OpStore %x %v OpStore %x %v
%20 = OpLoad %v4uint %x %20 = OpLoad %v4uint %x
%23 = OpULessThanEqual %v4bool %20 %22 %23 = OpULessThanEqual %v4bool %20 %22
%19 = OpSelect %v4uint %23 %27 %29 %19 = OpSelect %v4uint %23 %27 %18
%30 = OpLoad %v4uint %x %28 = OpLoad %v4uint %x
%31 = OpShiftLeftLogical %v4uint %30 %19 %29 = OpShiftLeftLogical %v4uint %28 %19
OpStore %x %31 OpStore %x %29
%33 = OpLoad %v4uint %x %31 = OpLoad %v4uint %x
%36 = OpULessThanEqual %v4bool %33 %35 %34 = OpULessThanEqual %v4bool %31 %33
%32 = OpSelect %v4uint %36 %38 %29 %30 = OpSelect %v4uint %34 %36 %18
%39 = OpLoad %v4uint %x %37 = OpLoad %v4uint %x
%40 = OpShiftLeftLogical %v4uint %39 %32 %38 = OpShiftLeftLogical %v4uint %37 %30
OpStore %x %40 OpStore %x %38
%42 = OpLoad %v4uint %x %40 = OpLoad %v4uint %x
%45 = OpULessThanEqual %v4bool %42 %44 %43 = OpULessThanEqual %v4bool %40 %42
%41 = OpSelect %v4uint %45 %47 %29 %39 = OpSelect %v4uint %43 %45 %18
%48 = OpLoad %v4uint %x %46 = OpLoad %v4uint %x
%49 = OpShiftLeftLogical %v4uint %48 %41 %47 = OpShiftLeftLogical %v4uint %46 %39
OpStore %x %49 OpStore %x %47
%51 = OpLoad %v4uint %x %49 = OpLoad %v4uint %x
%54 = OpULessThanEqual %v4bool %51 %53 %52 = OpULessThanEqual %v4bool %49 %51
%50 = OpSelect %v4uint %54 %56 %29 %48 = OpSelect %v4uint %52 %54 %18
%57 = OpLoad %v4uint %x %55 = OpLoad %v4uint %x
%58 = OpShiftLeftLogical %v4uint %57 %50 %56 = OpShiftLeftLogical %v4uint %55 %48
OpStore %x %58 OpStore %x %56
%60 = OpLoad %v4uint %x %58 = OpLoad %v4uint %x
%63 = OpULessThanEqual %v4bool %60 %62 %61 = OpULessThanEqual %v4bool %58 %60
%59 = OpSelect %v4uint %63 %65 %29 %57 = OpSelect %v4uint %61 %63 %18
%67 = OpLoad %v4uint %x %65 = OpLoad %v4uint %x
%68 = OpIEqual %v4bool %67 %29 %66 = OpIEqual %v4bool %65 %18
%66 = OpSelect %v4uint %68 %65 %29 %64 = OpSelect %v4uint %66 %63 %18
%70 = OpBitwiseOr %v4uint %19 %32 %68 = OpBitwiseOr %v4uint %19 %30
%71 = OpBitwiseOr %v4uint %70 %41 %69 = OpBitwiseOr %v4uint %68 %39
%72 = OpBitwiseOr %v4uint %71 %50 %70 = OpBitwiseOr %v4uint %69 %48
%73 = OpBitwiseOr %v4uint %72 %59 %71 = OpBitwiseOr %v4uint %70 %57
%74 = OpIAdd %v4uint %73 %66 %72 = OpIAdd %v4uint %71 %64
OpReturnValue %74 OpReturnValue %72
OpFunctionEnd OpFunctionEnd
%countLeadingZeros_f70103 = OpFunction %void None %75 %countLeadingZeros_f70103 = OpFunction %void None %73
%78 = OpLabel %76 = OpLabel
%res = OpVariable %_ptr_Function_v4uint Function %18 %res = OpVariable %_ptr_Function_v4uint Function %18
%79 = OpFunctionCall %v4uint %tint_count_leading_zeros %18 %77 = OpFunctionCall %v4uint %tint_count_leading_zeros %18
OpStore %res %79 OpStore %res %77
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %81 %vertex_main_inner = OpFunction %v4float None %79
%83 = OpLabel %81 = OpLabel
%84 = OpFunctionCall %void %countLeadingZeros_f70103 %82 = OpFunctionCall %void %countLeadingZeros_f70103
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %75 %vertex_main = OpFunction %void None %73
%86 = OpLabel %84 = OpLabel
%87 = OpFunctionCall %v4float %vertex_main_inner %85 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %87 OpStore %value %85
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %75 %fragment_main = OpFunction %void None %73
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %void %countLeadingZeros_f70103 %89 = OpFunctionCall %void %countLeadingZeros_f70103
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %75 %compute_main = OpFunction %void None %73
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %void %countLeadingZeros_f70103 %92 = OpFunctionCall %void %countLeadingZeros_f70103
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 98 ; Bound: 96
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -40,27 +40,25 @@
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%25 = OpConstantComposite %v2uint %uint_65535 %uint_65535 %25 = OpConstantComposite %v2uint %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%28 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%30 = OpConstantComposite %v2uint %uint_16 %uint_16 %28 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%37 = OpConstantComposite %v2uint %uint_255 %uint_255 %35 = OpConstantComposite %v2uint %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v2uint %uint_8 %uint_8 %38 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%47 = OpConstantComposite %v2uint %uint_15 %uint_15 %45 = OpConstantComposite %v2uint %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%50 = OpConstantComposite %v2uint %uint_4 %uint_4 %48 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%57 = OpConstantComposite %v2uint %uint_3 %uint_3 %55 = OpConstantComposite %v2uint %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%60 = OpConstantComposite %v2uint %uint_2 %uint_2 %58 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v2uint %uint_1 %uint_1 %65 = OpConstantComposite %v2uint %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%78 = OpTypeFunction %void %76 = OpTypeFunction %void
%84 = OpTypeFunction %v4float %82 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %v2uint None %9 %tint_count_trailing_zeros = OpFunction %v2uint None %9
%v = OpFunctionParameter %v2uint %v = OpFunctionParameter %v2uint
@ -70,71 +68,71 @@
%23 = OpLoad %v2uint %x %23 = OpLoad %v2uint %x
%26 = OpBitwiseAnd %v2uint %23 %25 %26 = OpBitwiseAnd %v2uint %23 %25
%20 = OpINotEqual %v2bool %26 %18 %20 = OpINotEqual %v2bool %26 %18
%19 = OpSelect %v2uint %20 %28 %30 %19 = OpSelect %v2uint %20 %18 %28
%31 = OpLoad %v2uint %x %29 = OpLoad %v2uint %x
%32 = OpShiftRightLogical %v2uint %31 %19 %30 = OpShiftRightLogical %v2uint %29 %19
OpStore %x %32 OpStore %x %30
%35 = OpLoad %v2uint %x %33 = OpLoad %v2uint %x
%38 = OpBitwiseAnd %v2uint %35 %37 %36 = OpBitwiseAnd %v2uint %33 %35
%34 = OpINotEqual %v2bool %38 %18 %32 = OpINotEqual %v2bool %36 %18
%33 = OpSelect %v2uint %34 %28 %40 %31 = OpSelect %v2uint %32 %18 %38
%41 = OpLoad %v2uint %x %39 = OpLoad %v2uint %x
%42 = OpShiftRightLogical %v2uint %41 %33 %40 = OpShiftRightLogical %v2uint %39 %31
OpStore %x %42 OpStore %x %40
%45 = OpLoad %v2uint %x %43 = OpLoad %v2uint %x
%48 = OpBitwiseAnd %v2uint %45 %47 %46 = OpBitwiseAnd %v2uint %43 %45
%44 = OpINotEqual %v2bool %48 %18 %42 = OpINotEqual %v2bool %46 %18
%43 = OpSelect %v2uint %44 %28 %50 %41 = OpSelect %v2uint %42 %18 %48
%51 = OpLoad %v2uint %x %49 = OpLoad %v2uint %x
%52 = OpShiftRightLogical %v2uint %51 %43 %50 = OpShiftRightLogical %v2uint %49 %41
OpStore %x %52 OpStore %x %50
%55 = OpLoad %v2uint %x %53 = OpLoad %v2uint %x
%58 = OpBitwiseAnd %v2uint %55 %57 %56 = OpBitwiseAnd %v2uint %53 %55
%54 = OpINotEqual %v2bool %58 %18 %52 = OpINotEqual %v2bool %56 %18
%53 = OpSelect %v2uint %54 %28 %60 %51 = OpSelect %v2uint %52 %18 %58
%61 = OpLoad %v2uint %x %59 = OpLoad %v2uint %x
%62 = OpShiftRightLogical %v2uint %61 %53 %60 = OpShiftRightLogical %v2uint %59 %51
OpStore %x %62 OpStore %x %60
%65 = OpLoad %v2uint %x %63 = OpLoad %v2uint %x
%68 = OpBitwiseAnd %v2uint %65 %67 %66 = OpBitwiseAnd %v2uint %63 %65
%64 = OpINotEqual %v2bool %68 %18 %62 = OpINotEqual %v2bool %66 %18
%63 = OpSelect %v2uint %64 %28 %67 %61 = OpSelect %v2uint %62 %18 %65
%70 = OpLoad %v2uint %x %68 = OpLoad %v2uint %x
%71 = OpIEqual %v2bool %70 %28 %69 = OpIEqual %v2bool %68 %18
%69 = OpSelect %v2uint %71 %67 %28 %67 = OpSelect %v2uint %69 %65 %18
%73 = OpBitwiseOr %v2uint %19 %33 %71 = OpBitwiseOr %v2uint %19 %31
%74 = OpBitwiseOr %v2uint %73 %43 %72 = OpBitwiseOr %v2uint %71 %41
%75 = OpBitwiseOr %v2uint %74 %53 %73 = OpBitwiseOr %v2uint %72 %51
%76 = OpBitwiseOr %v2uint %75 %63 %74 = OpBitwiseOr %v2uint %73 %61
%77 = OpIAdd %v2uint %76 %69 %75 = OpIAdd %v2uint %74 %67
OpReturnValue %77 OpReturnValue %75
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_1ad138 = OpFunction %void None %78 %countTrailingZeros_1ad138 = OpFunction %void None %76
%81 = OpLabel %79 = OpLabel
%res = OpVariable %_ptr_Function_v2uint Function %18 %res = OpVariable %_ptr_Function_v2uint Function %18
%82 = OpFunctionCall %v2uint %tint_count_trailing_zeros %18 %80 = OpFunctionCall %v2uint %tint_count_trailing_zeros %18
OpStore %res %82 OpStore %res %80
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %84 %vertex_main_inner = OpFunction %v4float None %82
%86 = OpLabel %84 = OpLabel
%87 = OpFunctionCall %void %countTrailingZeros_1ad138 %85 = OpFunctionCall %void %countTrailingZeros_1ad138
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %78 %vertex_main = OpFunction %void None %76
%89 = OpLabel %87 = OpLabel
%90 = OpFunctionCall %v4float %vertex_main_inner %88 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %90 OpStore %value %88
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %78 %fragment_main = OpFunction %void None %76
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %void %countTrailingZeros_1ad138 %92 = OpFunctionCall %void %countTrailingZeros_1ad138
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %78 %compute_main = OpFunction %void None %76
%96 = OpLabel %94 = OpLabel
%97 = OpFunctionCall %void %countTrailingZeros_1ad138 %95 = OpFunctionCall %void %countTrailingZeros_1ad138
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 102 ; Bound: 100
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,29 +42,27 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%27 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535 %27 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%30 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%32 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %30 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%39 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255 %37 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%42 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %40 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%49 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15 %47 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%52 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %50 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%59 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3 %57 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%62 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %60 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%69 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%80 = OpTypeFunction %void %78 = OpTypeFunction %void
%85 = OpConstantNull %v4int %83 = OpConstantNull %v4int
%_ptr_Function_v4int = OpTypePointer Function %v4int %_ptr_Function_v4int = OpTypePointer Function %v4int
%88 = OpTypeFunction %v4float %86 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %v4int None %9 %tint_count_trailing_zeros = OpFunction %v4int None %9
%v = OpFunctionParameter %v4int %v = OpFunctionParameter %v4int
@ -75,72 +73,72 @@
%25 = OpLoad %v4uint %x %25 = OpLoad %v4uint %x
%28 = OpBitwiseAnd %v4uint %25 %27 %28 = OpBitwiseAnd %v4uint %25 %27
%22 = OpINotEqual %v4bool %28 %20 %22 = OpINotEqual %v4bool %28 %20
%21 = OpSelect %v4uint %22 %30 %32 %21 = OpSelect %v4uint %22 %20 %30
%33 = OpLoad %v4uint %x %31 = OpLoad %v4uint %x
%34 = OpShiftRightLogical %v4uint %33 %21 %32 = OpShiftRightLogical %v4uint %31 %21
OpStore %x %34 OpStore %x %32
%37 = OpLoad %v4uint %x %35 = OpLoad %v4uint %x
%40 = OpBitwiseAnd %v4uint %37 %39 %38 = OpBitwiseAnd %v4uint %35 %37
%36 = OpINotEqual %v4bool %40 %20 %34 = OpINotEqual %v4bool %38 %20
%35 = OpSelect %v4uint %36 %30 %42 %33 = OpSelect %v4uint %34 %20 %40
%43 = OpLoad %v4uint %x %41 = OpLoad %v4uint %x
%44 = OpShiftRightLogical %v4uint %43 %35 %42 = OpShiftRightLogical %v4uint %41 %33
OpStore %x %44 OpStore %x %42
%47 = OpLoad %v4uint %x %45 = OpLoad %v4uint %x
%50 = OpBitwiseAnd %v4uint %47 %49 %48 = OpBitwiseAnd %v4uint %45 %47
%46 = OpINotEqual %v4bool %50 %20 %44 = OpINotEqual %v4bool %48 %20
%45 = OpSelect %v4uint %46 %30 %52 %43 = OpSelect %v4uint %44 %20 %50
%53 = OpLoad %v4uint %x %51 = OpLoad %v4uint %x
%54 = OpShiftRightLogical %v4uint %53 %45 %52 = OpShiftRightLogical %v4uint %51 %43
OpStore %x %54 OpStore %x %52
%57 = OpLoad %v4uint %x %55 = OpLoad %v4uint %x
%60 = OpBitwiseAnd %v4uint %57 %59 %58 = OpBitwiseAnd %v4uint %55 %57
%56 = OpINotEqual %v4bool %60 %20 %54 = OpINotEqual %v4bool %58 %20
%55 = OpSelect %v4uint %56 %30 %62 %53 = OpSelect %v4uint %54 %20 %60
%63 = OpLoad %v4uint %x %61 = OpLoad %v4uint %x
%64 = OpShiftRightLogical %v4uint %63 %55 %62 = OpShiftRightLogical %v4uint %61 %53
OpStore %x %64 OpStore %x %62
%67 = OpLoad %v4uint %x %65 = OpLoad %v4uint %x
%70 = OpBitwiseAnd %v4uint %67 %69 %68 = OpBitwiseAnd %v4uint %65 %67
%66 = OpINotEqual %v4bool %70 %20 %64 = OpINotEqual %v4bool %68 %20
%65 = OpSelect %v4uint %66 %30 %69 %63 = OpSelect %v4uint %64 %20 %67
%72 = OpLoad %v4uint %x %70 = OpLoad %v4uint %x
%73 = OpIEqual %v4bool %72 %30 %71 = OpIEqual %v4bool %70 %20
%71 = OpSelect %v4uint %73 %69 %30 %69 = OpSelect %v4uint %71 %67 %20
%75 = OpBitwiseOr %v4uint %21 %35 %73 = OpBitwiseOr %v4uint %21 %33
%76 = OpBitwiseOr %v4uint %75 %45 %74 = OpBitwiseOr %v4uint %73 %43
%77 = OpBitwiseOr %v4uint %76 %55 %75 = OpBitwiseOr %v4uint %74 %53
%78 = OpBitwiseOr %v4uint %77 %65 %76 = OpBitwiseOr %v4uint %75 %63
%79 = OpIAdd %v4uint %78 %71 %77 = OpIAdd %v4uint %76 %69
%74 = OpBitcast %v4int %79 %72 = OpBitcast %v4int %77
OpReturnValue %74 OpReturnValue %72
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_1dc84a = OpFunction %void None %80 %countTrailingZeros_1dc84a = OpFunction %void None %78
%83 = OpLabel %81 = OpLabel
%res = OpVariable %_ptr_Function_v4int Function %85 %res = OpVariable %_ptr_Function_v4int Function %83
%84 = OpFunctionCall %v4int %tint_count_trailing_zeros %85 %82 = OpFunctionCall %v4int %tint_count_trailing_zeros %83
OpStore %res %84 OpStore %res %82
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %88 %vertex_main_inner = OpFunction %v4float None %86
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %void %countTrailingZeros_1dc84a %89 = OpFunctionCall %void %countTrailingZeros_1dc84a
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %80 %vertex_main = OpFunction %void None %78
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %v4float %vertex_main_inner %92 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %94 OpStore %value %92
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %80 %fragment_main = OpFunction %void None %78
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %countTrailingZeros_1dc84a %96 = OpFunctionCall %void %countTrailingZeros_1dc84a
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %80 %compute_main = OpFunction %void None %78
%100 = OpLabel %98 = OpLabel
%101 = OpFunctionCall %void %countTrailingZeros_1dc84a %99 = OpFunctionCall %void %countTrailingZeros_1dc84a
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 86 ; Bound: 85
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -37,7 +37,6 @@
%17 = OpConstantNull %uint %17 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%uint_0 = OpConstant %uint 0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
@ -47,8 +46,8 @@
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%void = OpTypeVoid %void = OpTypeVoid
%66 = OpTypeFunction %void %65 = OpTypeFunction %void
%72 = OpTypeFunction %v4float %71 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %uint None %9 %tint_count_trailing_zeros = OpFunction %uint None %9
%v = OpFunctionParameter %uint %v = OpFunctionParameter %uint
@ -58,71 +57,71 @@
%21 = OpLoad %uint %x %21 = OpLoad %uint %x
%23 = OpBitwiseAnd %uint %21 %uint_65535 %23 = OpBitwiseAnd %uint %21 %uint_65535
%19 = OpINotEqual %bool %23 %17 %19 = OpINotEqual %bool %23 %17
%18 = OpSelect %uint %19 %uint_0 %uint_16 %18 = OpSelect %uint %19 %17 %uint_16
%26 = OpLoad %uint %x %25 = OpLoad %uint %x
%27 = OpShiftRightLogical %uint %26 %18 %26 = OpShiftRightLogical %uint %25 %18
OpStore %x %27 OpStore %x %26
%30 = OpLoad %uint %x %29 = OpLoad %uint %x
%32 = OpBitwiseAnd %uint %30 %uint_255 %31 = OpBitwiseAnd %uint %29 %uint_255
%29 = OpINotEqual %bool %32 %17 %28 = OpINotEqual %bool %31 %17
%28 = OpSelect %uint %29 %uint_0 %uint_8 %27 = OpSelect %uint %28 %17 %uint_8
%34 = OpLoad %uint %x %33 = OpLoad %uint %x
%35 = OpShiftRightLogical %uint %34 %28 %34 = OpShiftRightLogical %uint %33 %27
OpStore %x %35 OpStore %x %34
%38 = OpLoad %uint %x %37 = OpLoad %uint %x
%40 = OpBitwiseAnd %uint %38 %uint_15 %39 = OpBitwiseAnd %uint %37 %uint_15
%37 = OpINotEqual %bool %40 %17 %36 = OpINotEqual %bool %39 %17
%36 = OpSelect %uint %37 %uint_0 %uint_4 %35 = OpSelect %uint %36 %17 %uint_4
%42 = OpLoad %uint %x %41 = OpLoad %uint %x
%43 = OpShiftRightLogical %uint %42 %36 %42 = OpShiftRightLogical %uint %41 %35
OpStore %x %43 OpStore %x %42
%46 = OpLoad %uint %x %45 = OpLoad %uint %x
%48 = OpBitwiseAnd %uint %46 %uint_3 %47 = OpBitwiseAnd %uint %45 %uint_3
%45 = OpINotEqual %bool %48 %17 %44 = OpINotEqual %bool %47 %17
%44 = OpSelect %uint %45 %uint_0 %uint_2 %43 = OpSelect %uint %44 %17 %uint_2
%50 = OpLoad %uint %x %49 = OpLoad %uint %x
%51 = OpShiftRightLogical %uint %50 %44 %50 = OpShiftRightLogical %uint %49 %43
OpStore %x %51 OpStore %x %50
%54 = OpLoad %uint %x %53 = OpLoad %uint %x
%56 = OpBitwiseAnd %uint %54 %uint_1 %55 = OpBitwiseAnd %uint %53 %uint_1
%53 = OpINotEqual %bool %56 %17 %52 = OpINotEqual %bool %55 %17
%52 = OpSelect %uint %53 %uint_0 %uint_1 %51 = OpSelect %uint %52 %17 %uint_1
%58 = OpLoad %uint %x %57 = OpLoad %uint %x
%59 = OpIEqual %bool %58 %uint_0 %58 = OpIEqual %bool %57 %17
%57 = OpSelect %uint %59 %uint_1 %uint_0 %56 = OpSelect %uint %58 %uint_1 %17
%61 = OpBitwiseOr %uint %18 %28 %60 = OpBitwiseOr %uint %18 %27
%62 = OpBitwiseOr %uint %61 %36 %61 = OpBitwiseOr %uint %60 %35
%63 = OpBitwiseOr %uint %62 %44 %62 = OpBitwiseOr %uint %61 %43
%64 = OpBitwiseOr %uint %63 %52 %63 = OpBitwiseOr %uint %62 %51
%65 = OpIAdd %uint %64 %57 %64 = OpIAdd %uint %63 %56
OpReturnValue %65 OpReturnValue %64
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_21e394 = OpFunction %void None %66 %countTrailingZeros_21e394 = OpFunction %void None %65
%69 = OpLabel %68 = OpLabel
%res = OpVariable %_ptr_Function_uint Function %17 %res = OpVariable %_ptr_Function_uint Function %17
%70 = OpFunctionCall %uint %tint_count_trailing_zeros %uint_1 %69 = OpFunctionCall %uint %tint_count_trailing_zeros %uint_1
OpStore %res %70 OpStore %res %69
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %72 %vertex_main_inner = OpFunction %v4float None %71
%74 = OpLabel %73 = OpLabel
%75 = OpFunctionCall %void %countTrailingZeros_21e394 %74 = OpFunctionCall %void %countTrailingZeros_21e394
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %66 %vertex_main = OpFunction %void None %65
%77 = OpLabel %76 = OpLabel
%78 = OpFunctionCall %v4float %vertex_main_inner %77 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %78 OpStore %value %77
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %66 %fragment_main = OpFunction %void None %65
%81 = OpLabel %80 = OpLabel
%82 = OpFunctionCall %void %countTrailingZeros_21e394 %81 = OpFunctionCall %void %countTrailingZeros_21e394
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %66 %compute_main = OpFunction %void None %65
%84 = OpLabel %83 = OpLabel
%85 = OpFunctionCall %void %countTrailingZeros_21e394 %84 = OpFunctionCall %void %countTrailingZeros_21e394
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 102 ; Bound: 100
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,29 +42,27 @@
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%27 = OpConstantComposite %v2uint %uint_65535 %uint_65535 %27 = OpConstantComposite %v2uint %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%30 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%32 = OpConstantComposite %v2uint %uint_16 %uint_16 %30 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%39 = OpConstantComposite %v2uint %uint_255 %uint_255 %37 = OpConstantComposite %v2uint %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%42 = OpConstantComposite %v2uint %uint_8 %uint_8 %40 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%49 = OpConstantComposite %v2uint %uint_15 %uint_15 %47 = OpConstantComposite %v2uint %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%52 = OpConstantComposite %v2uint %uint_4 %uint_4 %50 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%59 = OpConstantComposite %v2uint %uint_3 %uint_3 %57 = OpConstantComposite %v2uint %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%62 = OpConstantComposite %v2uint %uint_2 %uint_2 %60 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%69 = OpConstantComposite %v2uint %uint_1 %uint_1 %67 = OpConstantComposite %v2uint %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%80 = OpTypeFunction %void %78 = OpTypeFunction %void
%85 = OpConstantNull %v2int %83 = OpConstantNull %v2int
%_ptr_Function_v2int = OpTypePointer Function %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int
%88 = OpTypeFunction %v4float %86 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %v2int None %9 %tint_count_trailing_zeros = OpFunction %v2int None %9
%v = OpFunctionParameter %v2int %v = OpFunctionParameter %v2int
@ -75,72 +73,72 @@
%25 = OpLoad %v2uint %x %25 = OpLoad %v2uint %x
%28 = OpBitwiseAnd %v2uint %25 %27 %28 = OpBitwiseAnd %v2uint %25 %27
%22 = OpINotEqual %v2bool %28 %20 %22 = OpINotEqual %v2bool %28 %20
%21 = OpSelect %v2uint %22 %30 %32 %21 = OpSelect %v2uint %22 %20 %30
%33 = OpLoad %v2uint %x %31 = OpLoad %v2uint %x
%34 = OpShiftRightLogical %v2uint %33 %21 %32 = OpShiftRightLogical %v2uint %31 %21
OpStore %x %34 OpStore %x %32
%37 = OpLoad %v2uint %x %35 = OpLoad %v2uint %x
%40 = OpBitwiseAnd %v2uint %37 %39 %38 = OpBitwiseAnd %v2uint %35 %37
%36 = OpINotEqual %v2bool %40 %20 %34 = OpINotEqual %v2bool %38 %20
%35 = OpSelect %v2uint %36 %30 %42 %33 = OpSelect %v2uint %34 %20 %40
%43 = OpLoad %v2uint %x %41 = OpLoad %v2uint %x
%44 = OpShiftRightLogical %v2uint %43 %35 %42 = OpShiftRightLogical %v2uint %41 %33
OpStore %x %44 OpStore %x %42
%47 = OpLoad %v2uint %x %45 = OpLoad %v2uint %x
%50 = OpBitwiseAnd %v2uint %47 %49 %48 = OpBitwiseAnd %v2uint %45 %47
%46 = OpINotEqual %v2bool %50 %20 %44 = OpINotEqual %v2bool %48 %20
%45 = OpSelect %v2uint %46 %30 %52 %43 = OpSelect %v2uint %44 %20 %50
%53 = OpLoad %v2uint %x %51 = OpLoad %v2uint %x
%54 = OpShiftRightLogical %v2uint %53 %45 %52 = OpShiftRightLogical %v2uint %51 %43
OpStore %x %54 OpStore %x %52
%57 = OpLoad %v2uint %x %55 = OpLoad %v2uint %x
%60 = OpBitwiseAnd %v2uint %57 %59 %58 = OpBitwiseAnd %v2uint %55 %57
%56 = OpINotEqual %v2bool %60 %20 %54 = OpINotEqual %v2bool %58 %20
%55 = OpSelect %v2uint %56 %30 %62 %53 = OpSelect %v2uint %54 %20 %60
%63 = OpLoad %v2uint %x %61 = OpLoad %v2uint %x
%64 = OpShiftRightLogical %v2uint %63 %55 %62 = OpShiftRightLogical %v2uint %61 %53
OpStore %x %64 OpStore %x %62
%67 = OpLoad %v2uint %x %65 = OpLoad %v2uint %x
%70 = OpBitwiseAnd %v2uint %67 %69 %68 = OpBitwiseAnd %v2uint %65 %67
%66 = OpINotEqual %v2bool %70 %20 %64 = OpINotEqual %v2bool %68 %20
%65 = OpSelect %v2uint %66 %30 %69 %63 = OpSelect %v2uint %64 %20 %67
%72 = OpLoad %v2uint %x %70 = OpLoad %v2uint %x
%73 = OpIEqual %v2bool %72 %30 %71 = OpIEqual %v2bool %70 %20
%71 = OpSelect %v2uint %73 %69 %30 %69 = OpSelect %v2uint %71 %67 %20
%75 = OpBitwiseOr %v2uint %21 %35 %73 = OpBitwiseOr %v2uint %21 %33
%76 = OpBitwiseOr %v2uint %75 %45 %74 = OpBitwiseOr %v2uint %73 %43
%77 = OpBitwiseOr %v2uint %76 %55 %75 = OpBitwiseOr %v2uint %74 %53
%78 = OpBitwiseOr %v2uint %77 %65 %76 = OpBitwiseOr %v2uint %75 %63
%79 = OpIAdd %v2uint %78 %71 %77 = OpIAdd %v2uint %76 %69
%74 = OpBitcast %v2int %79 %72 = OpBitcast %v2int %77
OpReturnValue %74 OpReturnValue %72
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_327c37 = OpFunction %void None %80 %countTrailingZeros_327c37 = OpFunction %void None %78
%83 = OpLabel %81 = OpLabel
%res = OpVariable %_ptr_Function_v2int Function %85 %res = OpVariable %_ptr_Function_v2int Function %83
%84 = OpFunctionCall %v2int %tint_count_trailing_zeros %85 %82 = OpFunctionCall %v2int %tint_count_trailing_zeros %83
OpStore %res %84 OpStore %res %82
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %88 %vertex_main_inner = OpFunction %v4float None %86
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %void %countTrailingZeros_327c37 %89 = OpFunctionCall %void %countTrailingZeros_327c37
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %80 %vertex_main = OpFunction %void None %78
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %v4float %vertex_main_inner %92 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %94 OpStore %value %92
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %80 %fragment_main = OpFunction %void None %78
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %countTrailingZeros_327c37 %96 = OpFunctionCall %void %countTrailingZeros_327c37
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %80 %compute_main = OpFunction %void None %78
%100 = OpLabel %98 = OpLabel
%101 = OpFunctionCall %void %countTrailingZeros_327c37 %99 = OpFunctionCall %void %countTrailingZeros_327c37
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 90 ; Bound: 89
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -38,7 +38,6 @@
%18 = OpConstantNull %uint %18 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%uint_0 = OpConstant %uint 0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
@ -48,11 +47,11 @@
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%void = OpTypeVoid %void = OpTypeVoid
%67 = OpTypeFunction %void %66 = OpTypeFunction %void
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%75 = OpConstantNull %int %74 = OpConstantNull %int
%76 = OpTypeFunction %v4float %75 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %int None %9 %tint_count_trailing_zeros = OpFunction %int None %9
%v = OpFunctionParameter %int %v = OpFunctionParameter %int
@ -63,72 +62,72 @@
%22 = OpLoad %uint %x %22 = OpLoad %uint %x
%24 = OpBitwiseAnd %uint %22 %uint_65535 %24 = OpBitwiseAnd %uint %22 %uint_65535
%20 = OpINotEqual %bool %24 %18 %20 = OpINotEqual %bool %24 %18
%19 = OpSelect %uint %20 %uint_0 %uint_16 %19 = OpSelect %uint %20 %18 %uint_16
%27 = OpLoad %uint %x %26 = OpLoad %uint %x
%28 = OpShiftRightLogical %uint %27 %19 %27 = OpShiftRightLogical %uint %26 %19
OpStore %x %28 OpStore %x %27
%31 = OpLoad %uint %x %30 = OpLoad %uint %x
%33 = OpBitwiseAnd %uint %31 %uint_255 %32 = OpBitwiseAnd %uint %30 %uint_255
%30 = OpINotEqual %bool %33 %18 %29 = OpINotEqual %bool %32 %18
%29 = OpSelect %uint %30 %uint_0 %uint_8 %28 = OpSelect %uint %29 %18 %uint_8
%35 = OpLoad %uint %x %34 = OpLoad %uint %x
%36 = OpShiftRightLogical %uint %35 %29 %35 = OpShiftRightLogical %uint %34 %28
OpStore %x %36 OpStore %x %35
%39 = OpLoad %uint %x %38 = OpLoad %uint %x
%41 = OpBitwiseAnd %uint %39 %uint_15 %40 = OpBitwiseAnd %uint %38 %uint_15
%38 = OpINotEqual %bool %41 %18 %37 = OpINotEqual %bool %40 %18
%37 = OpSelect %uint %38 %uint_0 %uint_4 %36 = OpSelect %uint %37 %18 %uint_4
%43 = OpLoad %uint %x %42 = OpLoad %uint %x
%44 = OpShiftRightLogical %uint %43 %37 %43 = OpShiftRightLogical %uint %42 %36
OpStore %x %44 OpStore %x %43
%47 = OpLoad %uint %x %46 = OpLoad %uint %x
%49 = OpBitwiseAnd %uint %47 %uint_3 %48 = OpBitwiseAnd %uint %46 %uint_3
%46 = OpINotEqual %bool %49 %18 %45 = OpINotEqual %bool %48 %18
%45 = OpSelect %uint %46 %uint_0 %uint_2 %44 = OpSelect %uint %45 %18 %uint_2
%51 = OpLoad %uint %x %50 = OpLoad %uint %x
%52 = OpShiftRightLogical %uint %51 %45 %51 = OpShiftRightLogical %uint %50 %44
OpStore %x %52 OpStore %x %51
%55 = OpLoad %uint %x %54 = OpLoad %uint %x
%57 = OpBitwiseAnd %uint %55 %uint_1 %56 = OpBitwiseAnd %uint %54 %uint_1
%54 = OpINotEqual %bool %57 %18 %53 = OpINotEqual %bool %56 %18
%53 = OpSelect %uint %54 %uint_0 %uint_1 %52 = OpSelect %uint %53 %18 %uint_1
%59 = OpLoad %uint %x %58 = OpLoad %uint %x
%60 = OpIEqual %bool %59 %uint_0 %59 = OpIEqual %bool %58 %18
%58 = OpSelect %uint %60 %uint_1 %uint_0 %57 = OpSelect %uint %59 %uint_1 %18
%62 = OpBitwiseOr %uint %19 %29 %61 = OpBitwiseOr %uint %19 %28
%63 = OpBitwiseOr %uint %62 %37 %62 = OpBitwiseOr %uint %61 %36
%64 = OpBitwiseOr %uint %63 %45 %63 = OpBitwiseOr %uint %62 %44
%65 = OpBitwiseOr %uint %64 %53 %64 = OpBitwiseOr %uint %63 %52
%66 = OpIAdd %uint %65 %58 %65 = OpIAdd %uint %64 %57
%61 = OpBitcast %int %66 %60 = OpBitcast %int %65
OpReturnValue %61 OpReturnValue %60
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_42fed6 = OpFunction %void None %67 %countTrailingZeros_42fed6 = OpFunction %void None %66
%70 = OpLabel %69 = OpLabel
%res = OpVariable %_ptr_Function_int Function %75 %res = OpVariable %_ptr_Function_int Function %74
%71 = OpFunctionCall %int %tint_count_trailing_zeros %int_1 %70 = OpFunctionCall %int %tint_count_trailing_zeros %int_1
OpStore %res %71 OpStore %res %70
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %76 %vertex_main_inner = OpFunction %v4float None %75
%78 = OpLabel %77 = OpLabel
%79 = OpFunctionCall %void %countTrailingZeros_42fed6 %78 = OpFunctionCall %void %countTrailingZeros_42fed6
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %67 %vertex_main = OpFunction %void None %66
%81 = OpLabel %80 = OpLabel
%82 = OpFunctionCall %v4float %vertex_main_inner %81 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %82 OpStore %value %81
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %67 %fragment_main = OpFunction %void None %66
%85 = OpLabel %84 = OpLabel
%86 = OpFunctionCall %void %countTrailingZeros_42fed6 %85 = OpFunctionCall %void %countTrailingZeros_42fed6
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %67 %compute_main = OpFunction %void None %66
%88 = OpLabel %87 = OpLabel
%89 = OpFunctionCall %void %countTrailingZeros_42fed6 %88 = OpFunctionCall %void %countTrailingZeros_42fed6
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 98 ; Bound: 96
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -40,27 +40,25 @@
%v3bool = OpTypeVector %bool 3 %v3bool = OpTypeVector %bool 3
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%25 = OpConstantComposite %v3uint %uint_65535 %uint_65535 %uint_65535 %25 = OpConstantComposite %v3uint %uint_65535 %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%28 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%30 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 %28 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%37 = OpConstantComposite %v3uint %uint_255 %uint_255 %uint_255 %35 = OpConstantComposite %v3uint %uint_255 %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 %38 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%47 = OpConstantComposite %v3uint %uint_15 %uint_15 %uint_15 %45 = OpConstantComposite %v3uint %uint_15 %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%50 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 %48 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%57 = OpConstantComposite %v3uint %uint_3 %uint_3 %uint_3 %55 = OpConstantComposite %v3uint %uint_3 %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%60 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 %58 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%78 = OpTypeFunction %void %76 = OpTypeFunction %void
%84 = OpTypeFunction %v4float %82 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %v3uint None %9 %tint_count_trailing_zeros = OpFunction %v3uint None %9
%v = OpFunctionParameter %v3uint %v = OpFunctionParameter %v3uint
@ -70,71 +68,71 @@
%23 = OpLoad %v3uint %x %23 = OpLoad %v3uint %x
%26 = OpBitwiseAnd %v3uint %23 %25 %26 = OpBitwiseAnd %v3uint %23 %25
%20 = OpINotEqual %v3bool %26 %18 %20 = OpINotEqual %v3bool %26 %18
%19 = OpSelect %v3uint %20 %28 %30 %19 = OpSelect %v3uint %20 %18 %28
%31 = OpLoad %v3uint %x %29 = OpLoad %v3uint %x
%32 = OpShiftRightLogical %v3uint %31 %19 %30 = OpShiftRightLogical %v3uint %29 %19
OpStore %x %32 OpStore %x %30
%35 = OpLoad %v3uint %x %33 = OpLoad %v3uint %x
%38 = OpBitwiseAnd %v3uint %35 %37 %36 = OpBitwiseAnd %v3uint %33 %35
%34 = OpINotEqual %v3bool %38 %18 %32 = OpINotEqual %v3bool %36 %18
%33 = OpSelect %v3uint %34 %28 %40 %31 = OpSelect %v3uint %32 %18 %38
%41 = OpLoad %v3uint %x %39 = OpLoad %v3uint %x
%42 = OpShiftRightLogical %v3uint %41 %33 %40 = OpShiftRightLogical %v3uint %39 %31
OpStore %x %42 OpStore %x %40
%45 = OpLoad %v3uint %x %43 = OpLoad %v3uint %x
%48 = OpBitwiseAnd %v3uint %45 %47 %46 = OpBitwiseAnd %v3uint %43 %45
%44 = OpINotEqual %v3bool %48 %18 %42 = OpINotEqual %v3bool %46 %18
%43 = OpSelect %v3uint %44 %28 %50 %41 = OpSelect %v3uint %42 %18 %48
%51 = OpLoad %v3uint %x %49 = OpLoad %v3uint %x
%52 = OpShiftRightLogical %v3uint %51 %43 %50 = OpShiftRightLogical %v3uint %49 %41
OpStore %x %52 OpStore %x %50
%55 = OpLoad %v3uint %x %53 = OpLoad %v3uint %x
%58 = OpBitwiseAnd %v3uint %55 %57 %56 = OpBitwiseAnd %v3uint %53 %55
%54 = OpINotEqual %v3bool %58 %18 %52 = OpINotEqual %v3bool %56 %18
%53 = OpSelect %v3uint %54 %28 %60 %51 = OpSelect %v3uint %52 %18 %58
%61 = OpLoad %v3uint %x %59 = OpLoad %v3uint %x
%62 = OpShiftRightLogical %v3uint %61 %53 %60 = OpShiftRightLogical %v3uint %59 %51
OpStore %x %62 OpStore %x %60
%65 = OpLoad %v3uint %x %63 = OpLoad %v3uint %x
%68 = OpBitwiseAnd %v3uint %65 %67 %66 = OpBitwiseAnd %v3uint %63 %65
%64 = OpINotEqual %v3bool %68 %18 %62 = OpINotEqual %v3bool %66 %18
%63 = OpSelect %v3uint %64 %28 %67 %61 = OpSelect %v3uint %62 %18 %65
%70 = OpLoad %v3uint %x %68 = OpLoad %v3uint %x
%71 = OpIEqual %v3bool %70 %28 %69 = OpIEqual %v3bool %68 %18
%69 = OpSelect %v3uint %71 %67 %28 %67 = OpSelect %v3uint %69 %65 %18
%73 = OpBitwiseOr %v3uint %19 %33 %71 = OpBitwiseOr %v3uint %19 %31
%74 = OpBitwiseOr %v3uint %73 %43 %72 = OpBitwiseOr %v3uint %71 %41
%75 = OpBitwiseOr %v3uint %74 %53 %73 = OpBitwiseOr %v3uint %72 %51
%76 = OpBitwiseOr %v3uint %75 %63 %74 = OpBitwiseOr %v3uint %73 %61
%77 = OpIAdd %v3uint %76 %69 %75 = OpIAdd %v3uint %74 %67
OpReturnValue %77 OpReturnValue %75
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_8ed26f = OpFunction %void None %78 %countTrailingZeros_8ed26f = OpFunction %void None %76
%81 = OpLabel %79 = OpLabel
%res = OpVariable %_ptr_Function_v3uint Function %18 %res = OpVariable %_ptr_Function_v3uint Function %18
%82 = OpFunctionCall %v3uint %tint_count_trailing_zeros %18 %80 = OpFunctionCall %v3uint %tint_count_trailing_zeros %18
OpStore %res %82 OpStore %res %80
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %84 %vertex_main_inner = OpFunction %v4float None %82
%86 = OpLabel %84 = OpLabel
%87 = OpFunctionCall %void %countTrailingZeros_8ed26f %85 = OpFunctionCall %void %countTrailingZeros_8ed26f
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %78 %vertex_main = OpFunction %void None %76
%89 = OpLabel %87 = OpLabel
%90 = OpFunctionCall %v4float %vertex_main_inner %88 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %90 OpStore %value %88
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %78 %fragment_main = OpFunction %void None %76
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %void %countTrailingZeros_8ed26f %92 = OpFunctionCall %void %countTrailingZeros_8ed26f
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %78 %compute_main = OpFunction %void None %76
%96 = OpLabel %94 = OpLabel
%97 = OpFunctionCall %void %countTrailingZeros_8ed26f %95 = OpFunctionCall %void %countTrailingZeros_8ed26f
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 102 ; Bound: 100
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,29 +42,27 @@
%v3bool = OpTypeVector %bool 3 %v3bool = OpTypeVector %bool 3
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%27 = OpConstantComposite %v3uint %uint_65535 %uint_65535 %uint_65535 %27 = OpConstantComposite %v3uint %uint_65535 %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%30 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%32 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 %30 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%39 = OpConstantComposite %v3uint %uint_255 %uint_255 %uint_255 %37 = OpConstantComposite %v3uint %uint_255 %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%42 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 %40 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%49 = OpConstantComposite %v3uint %uint_15 %uint_15 %uint_15 %47 = OpConstantComposite %v3uint %uint_15 %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%52 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 %50 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%59 = OpConstantComposite %v3uint %uint_3 %uint_3 %uint_3 %57 = OpConstantComposite %v3uint %uint_3 %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%62 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 %60 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%69 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 %67 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%80 = OpTypeFunction %void %78 = OpTypeFunction %void
%85 = OpConstantNull %v3int %83 = OpConstantNull %v3int
%_ptr_Function_v3int = OpTypePointer Function %v3int %_ptr_Function_v3int = OpTypePointer Function %v3int
%88 = OpTypeFunction %v4float %86 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %v3int None %9 %tint_count_trailing_zeros = OpFunction %v3int None %9
%v = OpFunctionParameter %v3int %v = OpFunctionParameter %v3int
@ -75,72 +73,72 @@
%25 = OpLoad %v3uint %x %25 = OpLoad %v3uint %x
%28 = OpBitwiseAnd %v3uint %25 %27 %28 = OpBitwiseAnd %v3uint %25 %27
%22 = OpINotEqual %v3bool %28 %20 %22 = OpINotEqual %v3bool %28 %20
%21 = OpSelect %v3uint %22 %30 %32 %21 = OpSelect %v3uint %22 %20 %30
%33 = OpLoad %v3uint %x %31 = OpLoad %v3uint %x
%34 = OpShiftRightLogical %v3uint %33 %21 %32 = OpShiftRightLogical %v3uint %31 %21
OpStore %x %34 OpStore %x %32
%37 = OpLoad %v3uint %x %35 = OpLoad %v3uint %x
%40 = OpBitwiseAnd %v3uint %37 %39 %38 = OpBitwiseAnd %v3uint %35 %37
%36 = OpINotEqual %v3bool %40 %20 %34 = OpINotEqual %v3bool %38 %20
%35 = OpSelect %v3uint %36 %30 %42 %33 = OpSelect %v3uint %34 %20 %40
%43 = OpLoad %v3uint %x %41 = OpLoad %v3uint %x
%44 = OpShiftRightLogical %v3uint %43 %35 %42 = OpShiftRightLogical %v3uint %41 %33
OpStore %x %44 OpStore %x %42
%47 = OpLoad %v3uint %x %45 = OpLoad %v3uint %x
%50 = OpBitwiseAnd %v3uint %47 %49 %48 = OpBitwiseAnd %v3uint %45 %47
%46 = OpINotEqual %v3bool %50 %20 %44 = OpINotEqual %v3bool %48 %20
%45 = OpSelect %v3uint %46 %30 %52 %43 = OpSelect %v3uint %44 %20 %50
%53 = OpLoad %v3uint %x %51 = OpLoad %v3uint %x
%54 = OpShiftRightLogical %v3uint %53 %45 %52 = OpShiftRightLogical %v3uint %51 %43
OpStore %x %54 OpStore %x %52
%57 = OpLoad %v3uint %x %55 = OpLoad %v3uint %x
%60 = OpBitwiseAnd %v3uint %57 %59 %58 = OpBitwiseAnd %v3uint %55 %57
%56 = OpINotEqual %v3bool %60 %20 %54 = OpINotEqual %v3bool %58 %20
%55 = OpSelect %v3uint %56 %30 %62 %53 = OpSelect %v3uint %54 %20 %60
%63 = OpLoad %v3uint %x %61 = OpLoad %v3uint %x
%64 = OpShiftRightLogical %v3uint %63 %55 %62 = OpShiftRightLogical %v3uint %61 %53
OpStore %x %64 OpStore %x %62
%67 = OpLoad %v3uint %x %65 = OpLoad %v3uint %x
%70 = OpBitwiseAnd %v3uint %67 %69 %68 = OpBitwiseAnd %v3uint %65 %67
%66 = OpINotEqual %v3bool %70 %20 %64 = OpINotEqual %v3bool %68 %20
%65 = OpSelect %v3uint %66 %30 %69 %63 = OpSelect %v3uint %64 %20 %67
%72 = OpLoad %v3uint %x %70 = OpLoad %v3uint %x
%73 = OpIEqual %v3bool %72 %30 %71 = OpIEqual %v3bool %70 %20
%71 = OpSelect %v3uint %73 %69 %30 %69 = OpSelect %v3uint %71 %67 %20
%75 = OpBitwiseOr %v3uint %21 %35 %73 = OpBitwiseOr %v3uint %21 %33
%76 = OpBitwiseOr %v3uint %75 %45 %74 = OpBitwiseOr %v3uint %73 %43
%77 = OpBitwiseOr %v3uint %76 %55 %75 = OpBitwiseOr %v3uint %74 %53
%78 = OpBitwiseOr %v3uint %77 %65 %76 = OpBitwiseOr %v3uint %75 %63
%79 = OpIAdd %v3uint %78 %71 %77 = OpIAdd %v3uint %76 %69
%74 = OpBitcast %v3int %79 %72 = OpBitcast %v3int %77
OpReturnValue %74 OpReturnValue %72
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_acfacb = OpFunction %void None %80 %countTrailingZeros_acfacb = OpFunction %void None %78
%83 = OpLabel %81 = OpLabel
%res = OpVariable %_ptr_Function_v3int Function %85 %res = OpVariable %_ptr_Function_v3int Function %83
%84 = OpFunctionCall %v3int %tint_count_trailing_zeros %85 %82 = OpFunctionCall %v3int %tint_count_trailing_zeros %83
OpStore %res %84 OpStore %res %82
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %88 %vertex_main_inner = OpFunction %v4float None %86
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %void %countTrailingZeros_acfacb %89 = OpFunctionCall %void %countTrailingZeros_acfacb
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %80 %vertex_main = OpFunction %void None %78
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %v4float %vertex_main_inner %92 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %94 OpStore %value %92
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %80 %fragment_main = OpFunction %void None %78
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %countTrailingZeros_acfacb %96 = OpFunctionCall %void %countTrailingZeros_acfacb
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %80 %compute_main = OpFunction %void None %78
%100 = OpLabel %98 = OpLabel
%101 = OpFunctionCall %void %countTrailingZeros_acfacb %99 = OpFunctionCall %void %countTrailingZeros_acfacb
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 98 ; Bound: 96
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -40,27 +40,25 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%25 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535 %25 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%28 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%30 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %28 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%37 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255 %35 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %38 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%47 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15 %45 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%50 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %48 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%57 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3 %55 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%60 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %58 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%void = OpTypeVoid %void = OpTypeVoid
%78 = OpTypeFunction %void %76 = OpTypeFunction %void
%84 = OpTypeFunction %v4float %82 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_count_trailing_zeros = OpFunction %v4uint None %9 %tint_count_trailing_zeros = OpFunction %v4uint None %9
%v = OpFunctionParameter %v4uint %v = OpFunctionParameter %v4uint
@ -70,71 +68,71 @@
%23 = OpLoad %v4uint %x %23 = OpLoad %v4uint %x
%26 = OpBitwiseAnd %v4uint %23 %25 %26 = OpBitwiseAnd %v4uint %23 %25
%20 = OpINotEqual %v4bool %26 %18 %20 = OpINotEqual %v4bool %26 %18
%19 = OpSelect %v4uint %20 %28 %30 %19 = OpSelect %v4uint %20 %18 %28
%31 = OpLoad %v4uint %x %29 = OpLoad %v4uint %x
%32 = OpShiftRightLogical %v4uint %31 %19 %30 = OpShiftRightLogical %v4uint %29 %19
OpStore %x %32 OpStore %x %30
%35 = OpLoad %v4uint %x %33 = OpLoad %v4uint %x
%38 = OpBitwiseAnd %v4uint %35 %37 %36 = OpBitwiseAnd %v4uint %33 %35
%34 = OpINotEqual %v4bool %38 %18 %32 = OpINotEqual %v4bool %36 %18
%33 = OpSelect %v4uint %34 %28 %40 %31 = OpSelect %v4uint %32 %18 %38
%41 = OpLoad %v4uint %x %39 = OpLoad %v4uint %x
%42 = OpShiftRightLogical %v4uint %41 %33 %40 = OpShiftRightLogical %v4uint %39 %31
OpStore %x %42 OpStore %x %40
%45 = OpLoad %v4uint %x %43 = OpLoad %v4uint %x
%48 = OpBitwiseAnd %v4uint %45 %47 %46 = OpBitwiseAnd %v4uint %43 %45
%44 = OpINotEqual %v4bool %48 %18 %42 = OpINotEqual %v4bool %46 %18
%43 = OpSelect %v4uint %44 %28 %50 %41 = OpSelect %v4uint %42 %18 %48
%51 = OpLoad %v4uint %x %49 = OpLoad %v4uint %x
%52 = OpShiftRightLogical %v4uint %51 %43 %50 = OpShiftRightLogical %v4uint %49 %41
OpStore %x %52 OpStore %x %50
%55 = OpLoad %v4uint %x %53 = OpLoad %v4uint %x
%58 = OpBitwiseAnd %v4uint %55 %57 %56 = OpBitwiseAnd %v4uint %53 %55
%54 = OpINotEqual %v4bool %58 %18 %52 = OpINotEqual %v4bool %56 %18
%53 = OpSelect %v4uint %54 %28 %60 %51 = OpSelect %v4uint %52 %18 %58
%61 = OpLoad %v4uint %x %59 = OpLoad %v4uint %x
%62 = OpShiftRightLogical %v4uint %61 %53 %60 = OpShiftRightLogical %v4uint %59 %51
OpStore %x %62 OpStore %x %60
%65 = OpLoad %v4uint %x %63 = OpLoad %v4uint %x
%68 = OpBitwiseAnd %v4uint %65 %67 %66 = OpBitwiseAnd %v4uint %63 %65
%64 = OpINotEqual %v4bool %68 %18 %62 = OpINotEqual %v4bool %66 %18
%63 = OpSelect %v4uint %64 %28 %67 %61 = OpSelect %v4uint %62 %18 %65
%70 = OpLoad %v4uint %x %68 = OpLoad %v4uint %x
%71 = OpIEqual %v4bool %70 %28 %69 = OpIEqual %v4bool %68 %18
%69 = OpSelect %v4uint %71 %67 %28 %67 = OpSelect %v4uint %69 %65 %18
%73 = OpBitwiseOr %v4uint %19 %33 %71 = OpBitwiseOr %v4uint %19 %31
%74 = OpBitwiseOr %v4uint %73 %43 %72 = OpBitwiseOr %v4uint %71 %41
%75 = OpBitwiseOr %v4uint %74 %53 %73 = OpBitwiseOr %v4uint %72 %51
%76 = OpBitwiseOr %v4uint %75 %63 %74 = OpBitwiseOr %v4uint %73 %61
%77 = OpIAdd %v4uint %76 %69 %75 = OpIAdd %v4uint %74 %67
OpReturnValue %77 OpReturnValue %75
OpFunctionEnd OpFunctionEnd
%countTrailingZeros_d2b4a0 = OpFunction %void None %78 %countTrailingZeros_d2b4a0 = OpFunction %void None %76
%81 = OpLabel %79 = OpLabel
%res = OpVariable %_ptr_Function_v4uint Function %18 %res = OpVariable %_ptr_Function_v4uint Function %18
%82 = OpFunctionCall %v4uint %tint_count_trailing_zeros %18 %80 = OpFunctionCall %v4uint %tint_count_trailing_zeros %18
OpStore %res %82 OpStore %res %80
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %84 %vertex_main_inner = OpFunction %v4float None %82
%86 = OpLabel %84 = OpLabel
%87 = OpFunctionCall %void %countTrailingZeros_d2b4a0 %85 = OpFunctionCall %void %countTrailingZeros_d2b4a0
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %78 %vertex_main = OpFunction %void None %76
%89 = OpLabel %87 = OpLabel
%90 = OpFunctionCall %v4float %vertex_main_inner %88 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %90 OpStore %value %88
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %78 %fragment_main = OpFunction %void None %76
%93 = OpLabel %91 = OpLabel
%94 = OpFunctionCall %void %countTrailingZeros_d2b4a0 %92 = OpFunctionCall %void %countTrailingZeros_d2b4a0
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %78 %compute_main = OpFunction %void None %76
%96 = OpLabel %94 = OpLabel
%97 = OpFunctionCall %void %countTrailingZeros_d2b4a0 %95 = OpFunctionCall %void %countTrailingZeros_d2b4a0
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 99 ; Bound: 97
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,27 +42,25 @@
%24 = OpConstantComposite %v4uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %uint_4294901760 %24 = OpConstantComposite %v4uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %uint_4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%27 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %27 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%29 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%36 = OpConstantComposite %v4uint %uint_65280 %uint_65280 %uint_65280 %uint_65280 %34 = OpConstantComposite %v4uint %uint_65280 %uint_65280 %uint_65280 %uint_65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%39 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %37 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
%46 = OpConstantComposite %v4uint %uint_240 %uint_240 %uint_240 %uint_240 %44 = OpConstantComposite %v4uint %uint_240 %uint_240 %uint_240 %uint_240
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%49 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %47 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_12 = OpConstant %uint 12 %uint_12 = OpConstant %uint 12
%56 = OpConstantComposite %v4uint %uint_12 %uint_12 %uint_12 %uint_12 %54 = OpConstantComposite %v4uint %uint_12 %uint_12 %uint_12 %uint_12
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%59 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %57 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%72 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295 %70 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%79 = OpTypeFunction %void %77 = OpTypeFunction %void
%85 = OpTypeFunction %v4float %83 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %v4uint None %9 %tint_first_leading_bit = OpFunction %v4uint None %9
%v = OpFunctionParameter %v4uint %v = OpFunctionParameter %v4uint
@ -72,71 +70,71 @@
%22 = OpLoad %v4uint %x %22 = OpLoad %v4uint %x
%25 = OpBitwiseAnd %v4uint %22 %24 %25 = OpBitwiseAnd %v4uint %22 %24
%19 = OpINotEqual %v4bool %25 %17 %19 = OpINotEqual %v4bool %25 %17
%18 = OpSelect %v4uint %19 %27 %29 %18 = OpSelect %v4uint %19 %27 %17
%30 = OpLoad %v4uint %x %28 = OpLoad %v4uint %x
%31 = OpShiftRightLogical %v4uint %30 %18 %29 = OpShiftRightLogical %v4uint %28 %18
OpStore %x %31 OpStore %x %29
%34 = OpLoad %v4uint %x %32 = OpLoad %v4uint %x
%37 = OpBitwiseAnd %v4uint %34 %36 %35 = OpBitwiseAnd %v4uint %32 %34
%33 = OpINotEqual %v4bool %37 %17 %31 = OpINotEqual %v4bool %35 %17
%32 = OpSelect %v4uint %33 %39 %29 %30 = OpSelect %v4uint %31 %37 %17
%40 = OpLoad %v4uint %x %38 = OpLoad %v4uint %x
%41 = OpShiftRightLogical %v4uint %40 %32 %39 = OpShiftRightLogical %v4uint %38 %30
OpStore %x %41 OpStore %x %39
%44 = OpLoad %v4uint %x %42 = OpLoad %v4uint %x
%47 = OpBitwiseAnd %v4uint %44 %46 %45 = OpBitwiseAnd %v4uint %42 %44
%43 = OpINotEqual %v4bool %47 %17 %41 = OpINotEqual %v4bool %45 %17
%42 = OpSelect %v4uint %43 %49 %29 %40 = OpSelect %v4uint %41 %47 %17
%50 = OpLoad %v4uint %x %48 = OpLoad %v4uint %x
%51 = OpShiftRightLogical %v4uint %50 %42 %49 = OpShiftRightLogical %v4uint %48 %40
OpStore %x %51 OpStore %x %49
%54 = OpLoad %v4uint %x %52 = OpLoad %v4uint %x
%57 = OpBitwiseAnd %v4uint %54 %56 %55 = OpBitwiseAnd %v4uint %52 %54
%53 = OpINotEqual %v4bool %57 %17 %51 = OpINotEqual %v4bool %55 %17
%52 = OpSelect %v4uint %53 %59 %29 %50 = OpSelect %v4uint %51 %57 %17
%60 = OpLoad %v4uint %x %58 = OpLoad %v4uint %x
%61 = OpShiftRightLogical %v4uint %60 %52 %59 = OpShiftRightLogical %v4uint %58 %50
OpStore %x %61 OpStore %x %59
%64 = OpLoad %v4uint %x %62 = OpLoad %v4uint %x
%65 = OpBitwiseAnd %v4uint %64 %59 %63 = OpBitwiseAnd %v4uint %62 %57
%63 = OpINotEqual %v4bool %65 %17 %61 = OpINotEqual %v4bool %63 %17
%62 = OpSelect %v4uint %63 %67 %29 %60 = OpSelect %v4uint %61 %65 %17
%69 = OpLoad %v4uint %x %67 = OpLoad %v4uint %x
%70 = OpIEqual %v4bool %69 %29 %68 = OpIEqual %v4bool %67 %17
%68 = OpSelect %v4uint %70 %72 %29 %66 = OpSelect %v4uint %68 %70 %17
%74 = OpBitwiseOr %v4uint %18 %32 %72 = OpBitwiseOr %v4uint %18 %30
%75 = OpBitwiseOr %v4uint %74 %42 %73 = OpBitwiseOr %v4uint %72 %40
%76 = OpBitwiseOr %v4uint %75 %52 %74 = OpBitwiseOr %v4uint %73 %50
%77 = OpBitwiseOr %v4uint %76 %62 %75 = OpBitwiseOr %v4uint %74 %60
%78 = OpBitwiseOr %v4uint %77 %68 %76 = OpBitwiseOr %v4uint %75 %66
OpReturnValue %78 OpReturnValue %76
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_000ff3 = OpFunction %void None %79 %firstLeadingBit_000ff3 = OpFunction %void None %77
%82 = OpLabel %80 = OpLabel
%res = OpVariable %_ptr_Function_v4uint Function %17 %res = OpVariable %_ptr_Function_v4uint Function %17
%83 = OpFunctionCall %v4uint %tint_first_leading_bit %17 %81 = OpFunctionCall %v4uint %tint_first_leading_bit %17
OpStore %res %83 OpStore %res %81
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %85 %vertex_main_inner = OpFunction %v4float None %83
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %void %firstLeadingBit_000ff3 %86 = OpFunctionCall %void %firstLeadingBit_000ff3
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %79 %vertex_main = OpFunction %void None %77
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %v4float %vertex_main_inner %89 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %91 OpStore %value %89
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %79 %fragment_main = OpFunction %void None %77
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %firstLeadingBit_000ff3 %93 = OpFunctionCall %void %firstLeadingBit_000ff3
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %79 %compute_main = OpFunction %void None %77
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %firstLeadingBit_000ff3 %96 = OpFunctionCall %void %firstLeadingBit_000ff3
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 110 ; Bound: 106
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -36,119 +36,115 @@
%9 = OpTypeFunction %v3int %v3int %9 = OpTypeFunction %v3int %v3int
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3 %v3uint = OpTypeVector %uint 3
%int_0 = OpConstant %int 0 %18 = OpConstantNull %v3int
%19 = OpConstantComposite %v3int %int_0 %int_0 %int_0
%bool = OpTypeBool %bool = OpTypeBool
%v3bool = OpTypeVector %bool 3 %v3bool = OpTypeVector %bool 3
%_ptr_Function_v3uint = OpTypePointer Function %v3uint %_ptr_Function_v3uint = OpTypePointer Function %v3uint
%28 = OpConstantNull %v3uint %27 = OpConstantNull %v3uint
%uint_4294901760 = OpConstant %uint 4294901760 %uint_4294901760 = OpConstant %uint 4294901760
%33 = OpConstantComposite %v3uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %32 = OpConstantComposite %v3uint %uint_4294901760 %uint_4294901760 %uint_4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%36 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 %35 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%38 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%45 = OpConstantComposite %v3uint %uint_65280 %uint_65280 %uint_65280 %42 = OpConstantComposite %v3uint %uint_65280 %uint_65280 %uint_65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%48 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 %45 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
%55 = OpConstantComposite %v3uint %uint_240 %uint_240 %uint_240 %52 = OpConstantComposite %v3uint %uint_240 %uint_240 %uint_240
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%58 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 %55 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_12 = OpConstant %uint 12 %uint_12 = OpConstant %uint 12
%65 = OpConstantComposite %v3uint %uint_12 %uint_12 %uint_12 %62 = OpConstantComposite %v3uint %uint_12 %uint_12 %uint_12
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%68 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 %65 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%76 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 %73 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%81 = OpConstantComposite %v3uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %78 = OpConstantComposite %v3uint %uint_4294967295 %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%88 = OpTypeFunction %void %85 = OpTypeFunction %void
%93 = OpConstantNull %v3int
%_ptr_Function_v3int = OpTypePointer Function %v3int %_ptr_Function_v3int = OpTypePointer Function %v3int
%96 = OpTypeFunction %v4float %92 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %v3int None %9 %tint_first_leading_bit = OpFunction %v3int None %9
%v = OpFunctionParameter %v3int %v = OpFunctionParameter %v3int
%14 = OpLabel %14 = OpLabel
%x = OpVariable %_ptr_Function_v3uint Function %28 %x = OpVariable %_ptr_Function_v3uint Function %27
%20 = OpSLessThan %v3bool %v %19 %19 = OpSLessThan %v3bool %v %18
%24 = OpNot %v3int %v %23 = OpNot %v3int %v
%23 = OpBitcast %v3uint %24 %22 = OpBitcast %v3uint %23
%25 = OpBitcast %v3uint %v %24 = OpBitcast %v3uint %v
%15 = OpSelect %v3uint %20 %23 %25 %15 = OpSelect %v3uint %19 %22 %24
OpStore %x %15 OpStore %x %15
%31 = OpLoad %v3uint %x %30 = OpLoad %v3uint %x
%34 = OpBitwiseAnd %v3uint %31 %33 %33 = OpBitwiseAnd %v3uint %30 %32
%30 = OpINotEqual %v3bool %34 %28 %29 = OpINotEqual %v3bool %33 %27
%29 = OpSelect %v3uint %30 %36 %38 %28 = OpSelect %v3uint %29 %35 %27
%39 = OpLoad %v3uint %x %36 = OpLoad %v3uint %x
%40 = OpShiftRightLogical %v3uint %39 %29 %37 = OpShiftRightLogical %v3uint %36 %28
OpStore %x %40 OpStore %x %37
%43 = OpLoad %v3uint %x %40 = OpLoad %v3uint %x
%46 = OpBitwiseAnd %v3uint %43 %45 %43 = OpBitwiseAnd %v3uint %40 %42
%42 = OpINotEqual %v3bool %46 %28 %39 = OpINotEqual %v3bool %43 %27
%41 = OpSelect %v3uint %42 %48 %38 %38 = OpSelect %v3uint %39 %45 %27
%49 = OpLoad %v3uint %x %46 = OpLoad %v3uint %x
%50 = OpShiftRightLogical %v3uint %49 %41 %47 = OpShiftRightLogical %v3uint %46 %38
OpStore %x %50 OpStore %x %47
%53 = OpLoad %v3uint %x %50 = OpLoad %v3uint %x
%56 = OpBitwiseAnd %v3uint %53 %55 %53 = OpBitwiseAnd %v3uint %50 %52
%52 = OpINotEqual %v3bool %56 %28 %49 = OpINotEqual %v3bool %53 %27
%51 = OpSelect %v3uint %52 %58 %38 %48 = OpSelect %v3uint %49 %55 %27
%59 = OpLoad %v3uint %x %56 = OpLoad %v3uint %x
%60 = OpShiftRightLogical %v3uint %59 %51 %57 = OpShiftRightLogical %v3uint %56 %48
OpStore %x %60 OpStore %x %57
%63 = OpLoad %v3uint %x %60 = OpLoad %v3uint %x
%66 = OpBitwiseAnd %v3uint %63 %65 %63 = OpBitwiseAnd %v3uint %60 %62
%62 = OpINotEqual %v3bool %66 %28 %59 = OpINotEqual %v3bool %63 %27
%61 = OpSelect %v3uint %62 %68 %38 %58 = OpSelect %v3uint %59 %65 %27
%69 = OpLoad %v3uint %x %66 = OpLoad %v3uint %x
%70 = OpShiftRightLogical %v3uint %69 %61 %67 = OpShiftRightLogical %v3uint %66 %58
OpStore %x %70 OpStore %x %67
%73 = OpLoad %v3uint %x %70 = OpLoad %v3uint %x
%74 = OpBitwiseAnd %v3uint %73 %68 %71 = OpBitwiseAnd %v3uint %70 %65
%72 = OpINotEqual %v3bool %74 %28 %69 = OpINotEqual %v3bool %71 %27
%71 = OpSelect %v3uint %72 %76 %38 %68 = OpSelect %v3uint %69 %73 %27
%78 = OpLoad %v3uint %x %75 = OpLoad %v3uint %x
%79 = OpIEqual %v3bool %78 %38 %76 = OpIEqual %v3bool %75 %27
%77 = OpSelect %v3uint %79 %81 %38 %74 = OpSelect %v3uint %76 %78 %27
%83 = OpBitwiseOr %v3uint %29 %41 %80 = OpBitwiseOr %v3uint %28 %38
%84 = OpBitwiseOr %v3uint %83 %51 %81 = OpBitwiseOr %v3uint %80 %48
%85 = OpBitwiseOr %v3uint %84 %61 %82 = OpBitwiseOr %v3uint %81 %58
%86 = OpBitwiseOr %v3uint %85 %71 %83 = OpBitwiseOr %v3uint %82 %68
%87 = OpBitwiseOr %v3uint %86 %77 %84 = OpBitwiseOr %v3uint %83 %74
%82 = OpBitcast %v3int %87 %79 = OpBitcast %v3int %84
OpReturnValue %82 OpReturnValue %79
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_35053e = OpFunction %void None %88 %firstLeadingBit_35053e = OpFunction %void None %85
%91 = OpLabel %88 = OpLabel
%res = OpVariable %_ptr_Function_v3int Function %93 %res = OpVariable %_ptr_Function_v3int Function %18
%92 = OpFunctionCall %v3int %tint_first_leading_bit %93 %89 = OpFunctionCall %v3int %tint_first_leading_bit %18
OpStore %res %92 OpStore %res %89
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %96 %vertex_main_inner = OpFunction %v4float None %92
%98 = OpLabel %94 = OpLabel
%99 = OpFunctionCall %void %firstLeadingBit_35053e %95 = OpFunctionCall %void %firstLeadingBit_35053e
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %88 %vertex_main = OpFunction %void None %85
%101 = OpLabel %97 = OpLabel
%102 = OpFunctionCall %v4float %vertex_main_inner %98 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %102 OpStore %value %98
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %88 %fragment_main = OpFunction %void None %85
%105 = OpLabel %101 = OpLabel
%106 = OpFunctionCall %void %firstLeadingBit_35053e %102 = OpFunctionCall %void %firstLeadingBit_35053e
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %88 %compute_main = OpFunction %void None %85
%108 = OpLabel %104 = OpLabel
%109 = OpFunctionCall %void %firstLeadingBit_35053e %105 = OpFunctionCall %void %firstLeadingBit_35053e
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 99 ; Bound: 97
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,27 +42,25 @@
%24 = OpConstantComposite %v3uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %24 = OpConstantComposite %v3uint %uint_4294901760 %uint_4294901760 %uint_4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%27 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16 %27 = OpConstantComposite %v3uint %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%29 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%36 = OpConstantComposite %v3uint %uint_65280 %uint_65280 %uint_65280 %34 = OpConstantComposite %v3uint %uint_65280 %uint_65280 %uint_65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%39 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8 %37 = OpConstantComposite %v3uint %uint_8 %uint_8 %uint_8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
%46 = OpConstantComposite %v3uint %uint_240 %uint_240 %uint_240 %44 = OpConstantComposite %v3uint %uint_240 %uint_240 %uint_240
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%49 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4 %47 = OpConstantComposite %v3uint %uint_4 %uint_4 %uint_4
%uint_12 = OpConstant %uint 12 %uint_12 = OpConstant %uint 12
%56 = OpConstantComposite %v3uint %uint_12 %uint_12 %uint_12 %54 = OpConstantComposite %v3uint %uint_12 %uint_12 %uint_12
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%59 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2 %57 = OpConstantComposite %v3uint %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%72 = OpConstantComposite %v3uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %70 = OpConstantComposite %v3uint %uint_4294967295 %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%79 = OpTypeFunction %void %77 = OpTypeFunction %void
%85 = OpTypeFunction %v4float %83 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %v3uint None %9 %tint_first_leading_bit = OpFunction %v3uint None %9
%v = OpFunctionParameter %v3uint %v = OpFunctionParameter %v3uint
@ -72,71 +70,71 @@
%22 = OpLoad %v3uint %x %22 = OpLoad %v3uint %x
%25 = OpBitwiseAnd %v3uint %22 %24 %25 = OpBitwiseAnd %v3uint %22 %24
%19 = OpINotEqual %v3bool %25 %17 %19 = OpINotEqual %v3bool %25 %17
%18 = OpSelect %v3uint %19 %27 %29 %18 = OpSelect %v3uint %19 %27 %17
%30 = OpLoad %v3uint %x %28 = OpLoad %v3uint %x
%31 = OpShiftRightLogical %v3uint %30 %18 %29 = OpShiftRightLogical %v3uint %28 %18
OpStore %x %31 OpStore %x %29
%34 = OpLoad %v3uint %x %32 = OpLoad %v3uint %x
%37 = OpBitwiseAnd %v3uint %34 %36 %35 = OpBitwiseAnd %v3uint %32 %34
%33 = OpINotEqual %v3bool %37 %17 %31 = OpINotEqual %v3bool %35 %17
%32 = OpSelect %v3uint %33 %39 %29 %30 = OpSelect %v3uint %31 %37 %17
%40 = OpLoad %v3uint %x %38 = OpLoad %v3uint %x
%41 = OpShiftRightLogical %v3uint %40 %32 %39 = OpShiftRightLogical %v3uint %38 %30
OpStore %x %41 OpStore %x %39
%44 = OpLoad %v3uint %x %42 = OpLoad %v3uint %x
%47 = OpBitwiseAnd %v3uint %44 %46 %45 = OpBitwiseAnd %v3uint %42 %44
%43 = OpINotEqual %v3bool %47 %17 %41 = OpINotEqual %v3bool %45 %17
%42 = OpSelect %v3uint %43 %49 %29 %40 = OpSelect %v3uint %41 %47 %17
%50 = OpLoad %v3uint %x %48 = OpLoad %v3uint %x
%51 = OpShiftRightLogical %v3uint %50 %42 %49 = OpShiftRightLogical %v3uint %48 %40
OpStore %x %51 OpStore %x %49
%54 = OpLoad %v3uint %x %52 = OpLoad %v3uint %x
%57 = OpBitwiseAnd %v3uint %54 %56 %55 = OpBitwiseAnd %v3uint %52 %54
%53 = OpINotEqual %v3bool %57 %17 %51 = OpINotEqual %v3bool %55 %17
%52 = OpSelect %v3uint %53 %59 %29 %50 = OpSelect %v3uint %51 %57 %17
%60 = OpLoad %v3uint %x %58 = OpLoad %v3uint %x
%61 = OpShiftRightLogical %v3uint %60 %52 %59 = OpShiftRightLogical %v3uint %58 %50
OpStore %x %61 OpStore %x %59
%64 = OpLoad %v3uint %x %62 = OpLoad %v3uint %x
%65 = OpBitwiseAnd %v3uint %64 %59 %63 = OpBitwiseAnd %v3uint %62 %57
%63 = OpINotEqual %v3bool %65 %17 %61 = OpINotEqual %v3bool %63 %17
%62 = OpSelect %v3uint %63 %67 %29 %60 = OpSelect %v3uint %61 %65 %17
%69 = OpLoad %v3uint %x %67 = OpLoad %v3uint %x
%70 = OpIEqual %v3bool %69 %29 %68 = OpIEqual %v3bool %67 %17
%68 = OpSelect %v3uint %70 %72 %29 %66 = OpSelect %v3uint %68 %70 %17
%74 = OpBitwiseOr %v3uint %18 %32 %72 = OpBitwiseOr %v3uint %18 %30
%75 = OpBitwiseOr %v3uint %74 %42 %73 = OpBitwiseOr %v3uint %72 %40
%76 = OpBitwiseOr %v3uint %75 %52 %74 = OpBitwiseOr %v3uint %73 %50
%77 = OpBitwiseOr %v3uint %76 %62 %75 = OpBitwiseOr %v3uint %74 %60
%78 = OpBitwiseOr %v3uint %77 %68 %76 = OpBitwiseOr %v3uint %75 %66
OpReturnValue %78 OpReturnValue %76
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_3fd7d0 = OpFunction %void None %79 %firstLeadingBit_3fd7d0 = OpFunction %void None %77
%82 = OpLabel %80 = OpLabel
%res = OpVariable %_ptr_Function_v3uint Function %17 %res = OpVariable %_ptr_Function_v3uint Function %17
%83 = OpFunctionCall %v3uint %tint_first_leading_bit %17 %81 = OpFunctionCall %v3uint %tint_first_leading_bit %17
OpStore %res %83 OpStore %res %81
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %85 %vertex_main_inner = OpFunction %v4float None %83
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %void %firstLeadingBit_3fd7d0 %86 = OpFunctionCall %void %firstLeadingBit_3fd7d0
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %79 %vertex_main = OpFunction %void None %77
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %v4float %vertex_main_inner %89 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %91 OpStore %value %89
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %79 %fragment_main = OpFunction %void None %77
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %firstLeadingBit_3fd7d0 %93 = OpFunctionCall %void %firstLeadingBit_3fd7d0
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %79 %compute_main = OpFunction %void None %77
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %firstLeadingBit_3fd7d0 %96 = OpFunctionCall %void %firstLeadingBit_3fd7d0
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 96 ; Bound: 94
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -34,13 +34,12 @@
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%9 = OpTypeFunction %int %int %9 = OpTypeFunction %int %int
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%int_0 = OpConstant %int 0 %16 = OpConstantNull %int
%bool = OpTypeBool %bool = OpTypeBool
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%24 = OpConstantNull %uint %24 = OpConstantNull %uint
%uint_4294901760 = OpConstant %uint 4294901760 %uint_4294901760 = OpConstant %uint 4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_0 = OpConstant %uint 0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
@ -50,17 +49,16 @@
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%void = OpTypeVoid %void = OpTypeVoid
%73 = OpTypeFunction %void %72 = OpTypeFunction %void
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%81 = OpConstantNull %int %80 = OpTypeFunction %v4float
%82 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %int None %9 %tint_first_leading_bit = OpFunction %int None %9
%v = OpFunctionParameter %int %v = OpFunctionParameter %int
%13 = OpLabel %13 = OpLabel
%x = OpVariable %_ptr_Function_uint Function %24 %x = OpVariable %_ptr_Function_uint Function %24
%17 = OpSLessThan %bool %v %int_0 %17 = OpSLessThan %bool %v %16
%20 = OpNot %int %v %20 = OpNot %int %v
%19 = OpBitcast %uint %20 %19 = OpBitcast %uint %20
%21 = OpBitcast %uint %v %21 = OpBitcast %uint %v
@ -69,72 +67,72 @@
%27 = OpLoad %uint %x %27 = OpLoad %uint %x
%29 = OpBitwiseAnd %uint %27 %uint_4294901760 %29 = OpBitwiseAnd %uint %27 %uint_4294901760
%26 = OpINotEqual %bool %29 %24 %26 = OpINotEqual %bool %29 %24
%25 = OpSelect %uint %26 %uint_16 %uint_0 %25 = OpSelect %uint %26 %uint_16 %24
%32 = OpLoad %uint %x %31 = OpLoad %uint %x
%33 = OpShiftRightLogical %uint %32 %25 %32 = OpShiftRightLogical %uint %31 %25
OpStore %x %33 OpStore %x %32
%36 = OpLoad %uint %x %35 = OpLoad %uint %x
%38 = OpBitwiseAnd %uint %36 %uint_65280 %37 = OpBitwiseAnd %uint %35 %uint_65280
%35 = OpINotEqual %bool %38 %24 %34 = OpINotEqual %bool %37 %24
%34 = OpSelect %uint %35 %uint_8 %uint_0 %33 = OpSelect %uint %34 %uint_8 %24
%40 = OpLoad %uint %x %39 = OpLoad %uint %x
%41 = OpShiftRightLogical %uint %40 %34 %40 = OpShiftRightLogical %uint %39 %33
OpStore %x %41 OpStore %x %40
%44 = OpLoad %uint %x %43 = OpLoad %uint %x
%46 = OpBitwiseAnd %uint %44 %uint_240 %45 = OpBitwiseAnd %uint %43 %uint_240
%43 = OpINotEqual %bool %46 %24 %42 = OpINotEqual %bool %45 %24
%42 = OpSelect %uint %43 %uint_4 %uint_0 %41 = OpSelect %uint %42 %uint_4 %24
%48 = OpLoad %uint %x %47 = OpLoad %uint %x
%49 = OpShiftRightLogical %uint %48 %42 %48 = OpShiftRightLogical %uint %47 %41
OpStore %x %49 OpStore %x %48
%52 = OpLoad %uint %x %51 = OpLoad %uint %x
%54 = OpBitwiseAnd %uint %52 %uint_12 %53 = OpBitwiseAnd %uint %51 %uint_12
%51 = OpINotEqual %bool %54 %24 %50 = OpINotEqual %bool %53 %24
%50 = OpSelect %uint %51 %uint_2 %uint_0 %49 = OpSelect %uint %50 %uint_2 %24
%56 = OpLoad %uint %x %55 = OpLoad %uint %x
%57 = OpShiftRightLogical %uint %56 %50 %56 = OpShiftRightLogical %uint %55 %49
OpStore %x %57 OpStore %x %56
%60 = OpLoad %uint %x %59 = OpLoad %uint %x
%61 = OpBitwiseAnd %uint %60 %uint_2 %60 = OpBitwiseAnd %uint %59 %uint_2
%59 = OpINotEqual %bool %61 %24 %58 = OpINotEqual %bool %60 %24
%58 = OpSelect %uint %59 %uint_1 %uint_0 %57 = OpSelect %uint %58 %uint_1 %24
%64 = OpLoad %uint %x %63 = OpLoad %uint %x
%65 = OpIEqual %bool %64 %uint_0 %64 = OpIEqual %bool %63 %24
%63 = OpSelect %uint %65 %uint_4294967295 %uint_0 %62 = OpSelect %uint %64 %uint_4294967295 %24
%68 = OpBitwiseOr %uint %25 %34 %67 = OpBitwiseOr %uint %25 %33
%69 = OpBitwiseOr %uint %68 %42 %68 = OpBitwiseOr %uint %67 %41
%70 = OpBitwiseOr %uint %69 %50 %69 = OpBitwiseOr %uint %68 %49
%71 = OpBitwiseOr %uint %70 %58 %70 = OpBitwiseOr %uint %69 %57
%72 = OpBitwiseOr %uint %71 %63 %71 = OpBitwiseOr %uint %70 %62
%67 = OpBitcast %int %72 %66 = OpBitcast %int %71
OpReturnValue %67 OpReturnValue %66
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_57a1a3 = OpFunction %void None %73 %firstLeadingBit_57a1a3 = OpFunction %void None %72
%76 = OpLabel %75 = OpLabel
%res = OpVariable %_ptr_Function_int Function %81 %res = OpVariable %_ptr_Function_int Function %16
%77 = OpFunctionCall %int %tint_first_leading_bit %int_1 %76 = OpFunctionCall %int %tint_first_leading_bit %int_1
OpStore %res %77 OpStore %res %76
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %82 %vertex_main_inner = OpFunction %v4float None %80
%84 = OpLabel %82 = OpLabel
%85 = OpFunctionCall %void %firstLeadingBit_57a1a3 %83 = OpFunctionCall %void %firstLeadingBit_57a1a3
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %73 %vertex_main = OpFunction %void None %72
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %v4float %vertex_main_inner %86 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %88 OpStore %value %86
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %73 %fragment_main = OpFunction %void None %72
%91 = OpLabel %89 = OpLabel
%92 = OpFunctionCall %void %firstLeadingBit_57a1a3 %90 = OpFunctionCall %void %firstLeadingBit_57a1a3
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %73 %compute_main = OpFunction %void None %72
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %firstLeadingBit_57a1a3 %93 = OpFunctionCall %void %firstLeadingBit_57a1a3
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 99 ; Bound: 97
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -42,27 +42,25 @@
%24 = OpConstantComposite %v2uint %uint_4294901760 %uint_4294901760 %24 = OpConstantComposite %v2uint %uint_4294901760 %uint_4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%27 = OpConstantComposite %v2uint %uint_16 %uint_16 %27 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%29 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%36 = OpConstantComposite %v2uint %uint_65280 %uint_65280 %34 = OpConstantComposite %v2uint %uint_65280 %uint_65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%39 = OpConstantComposite %v2uint %uint_8 %uint_8 %37 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
%46 = OpConstantComposite %v2uint %uint_240 %uint_240 %44 = OpConstantComposite %v2uint %uint_240 %uint_240
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%49 = OpConstantComposite %v2uint %uint_4 %uint_4 %47 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_12 = OpConstant %uint 12 %uint_12 = OpConstant %uint 12
%56 = OpConstantComposite %v2uint %uint_12 %uint_12 %54 = OpConstantComposite %v2uint %uint_12 %uint_12
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%59 = OpConstantComposite %v2uint %uint_2 %uint_2 %57 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v2uint %uint_1 %uint_1 %65 = OpConstantComposite %v2uint %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%72 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295 %70 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%79 = OpTypeFunction %void %77 = OpTypeFunction %void
%85 = OpTypeFunction %v4float %83 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %v2uint None %9 %tint_first_leading_bit = OpFunction %v2uint None %9
%v = OpFunctionParameter %v2uint %v = OpFunctionParameter %v2uint
@ -72,71 +70,71 @@
%22 = OpLoad %v2uint %x %22 = OpLoad %v2uint %x
%25 = OpBitwiseAnd %v2uint %22 %24 %25 = OpBitwiseAnd %v2uint %22 %24
%19 = OpINotEqual %v2bool %25 %17 %19 = OpINotEqual %v2bool %25 %17
%18 = OpSelect %v2uint %19 %27 %29 %18 = OpSelect %v2uint %19 %27 %17
%30 = OpLoad %v2uint %x %28 = OpLoad %v2uint %x
%31 = OpShiftRightLogical %v2uint %30 %18 %29 = OpShiftRightLogical %v2uint %28 %18
OpStore %x %31 OpStore %x %29
%34 = OpLoad %v2uint %x %32 = OpLoad %v2uint %x
%37 = OpBitwiseAnd %v2uint %34 %36 %35 = OpBitwiseAnd %v2uint %32 %34
%33 = OpINotEqual %v2bool %37 %17 %31 = OpINotEqual %v2bool %35 %17
%32 = OpSelect %v2uint %33 %39 %29 %30 = OpSelect %v2uint %31 %37 %17
%40 = OpLoad %v2uint %x %38 = OpLoad %v2uint %x
%41 = OpShiftRightLogical %v2uint %40 %32 %39 = OpShiftRightLogical %v2uint %38 %30
OpStore %x %41 OpStore %x %39
%44 = OpLoad %v2uint %x %42 = OpLoad %v2uint %x
%47 = OpBitwiseAnd %v2uint %44 %46 %45 = OpBitwiseAnd %v2uint %42 %44
%43 = OpINotEqual %v2bool %47 %17 %41 = OpINotEqual %v2bool %45 %17
%42 = OpSelect %v2uint %43 %49 %29 %40 = OpSelect %v2uint %41 %47 %17
%50 = OpLoad %v2uint %x %48 = OpLoad %v2uint %x
%51 = OpShiftRightLogical %v2uint %50 %42 %49 = OpShiftRightLogical %v2uint %48 %40
OpStore %x %51 OpStore %x %49
%54 = OpLoad %v2uint %x %52 = OpLoad %v2uint %x
%57 = OpBitwiseAnd %v2uint %54 %56 %55 = OpBitwiseAnd %v2uint %52 %54
%53 = OpINotEqual %v2bool %57 %17 %51 = OpINotEqual %v2bool %55 %17
%52 = OpSelect %v2uint %53 %59 %29 %50 = OpSelect %v2uint %51 %57 %17
%60 = OpLoad %v2uint %x %58 = OpLoad %v2uint %x
%61 = OpShiftRightLogical %v2uint %60 %52 %59 = OpShiftRightLogical %v2uint %58 %50
OpStore %x %61 OpStore %x %59
%64 = OpLoad %v2uint %x %62 = OpLoad %v2uint %x
%65 = OpBitwiseAnd %v2uint %64 %59 %63 = OpBitwiseAnd %v2uint %62 %57
%63 = OpINotEqual %v2bool %65 %17 %61 = OpINotEqual %v2bool %63 %17
%62 = OpSelect %v2uint %63 %67 %29 %60 = OpSelect %v2uint %61 %65 %17
%69 = OpLoad %v2uint %x %67 = OpLoad %v2uint %x
%70 = OpIEqual %v2bool %69 %29 %68 = OpIEqual %v2bool %67 %17
%68 = OpSelect %v2uint %70 %72 %29 %66 = OpSelect %v2uint %68 %70 %17
%74 = OpBitwiseOr %v2uint %18 %32 %72 = OpBitwiseOr %v2uint %18 %30
%75 = OpBitwiseOr %v2uint %74 %42 %73 = OpBitwiseOr %v2uint %72 %40
%76 = OpBitwiseOr %v2uint %75 %52 %74 = OpBitwiseOr %v2uint %73 %50
%77 = OpBitwiseOr %v2uint %76 %62 %75 = OpBitwiseOr %v2uint %74 %60
%78 = OpBitwiseOr %v2uint %77 %68 %76 = OpBitwiseOr %v2uint %75 %66
OpReturnValue %78 OpReturnValue %76
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_6fe804 = OpFunction %void None %79 %firstLeadingBit_6fe804 = OpFunction %void None %77
%82 = OpLabel %80 = OpLabel
%res = OpVariable %_ptr_Function_v2uint Function %17 %res = OpVariable %_ptr_Function_v2uint Function %17
%83 = OpFunctionCall %v2uint %tint_first_leading_bit %17 %81 = OpFunctionCall %v2uint %tint_first_leading_bit %17
OpStore %res %83 OpStore %res %81
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %85 %vertex_main_inner = OpFunction %v4float None %83
%87 = OpLabel %85 = OpLabel
%88 = OpFunctionCall %void %firstLeadingBit_6fe804 %86 = OpFunctionCall %void %firstLeadingBit_6fe804
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %79 %vertex_main = OpFunction %void None %77
%90 = OpLabel %88 = OpLabel
%91 = OpFunctionCall %v4float %vertex_main_inner %89 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %91 OpStore %value %89
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %79 %fragment_main = OpFunction %void None %77
%94 = OpLabel %92 = OpLabel
%95 = OpFunctionCall %void %firstLeadingBit_6fe804 %93 = OpFunctionCall %void %firstLeadingBit_6fe804
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %79 %compute_main = OpFunction %void None %77
%97 = OpLabel %95 = OpLabel
%98 = OpFunctionCall %void %firstLeadingBit_6fe804 %96 = OpFunctionCall %void %firstLeadingBit_6fe804
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 110 ; Bound: 106
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -36,119 +36,115 @@
%9 = OpTypeFunction %v2int %v2int %9 = OpTypeFunction %v2int %v2int
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%v2uint = OpTypeVector %uint 2 %v2uint = OpTypeVector %uint 2
%int_0 = OpConstant %int 0 %18 = OpConstantNull %v2int
%19 = OpConstantComposite %v2int %int_0 %int_0
%bool = OpTypeBool %bool = OpTypeBool
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%_ptr_Function_v2uint = OpTypePointer Function %v2uint %_ptr_Function_v2uint = OpTypePointer Function %v2uint
%28 = OpConstantNull %v2uint %27 = OpConstantNull %v2uint
%uint_4294901760 = OpConstant %uint 4294901760 %uint_4294901760 = OpConstant %uint 4294901760
%33 = OpConstantComposite %v2uint %uint_4294901760 %uint_4294901760 %32 = OpConstantComposite %v2uint %uint_4294901760 %uint_4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%36 = OpConstantComposite %v2uint %uint_16 %uint_16 %35 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%38 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%45 = OpConstantComposite %v2uint %uint_65280 %uint_65280 %42 = OpConstantComposite %v2uint %uint_65280 %uint_65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%48 = OpConstantComposite %v2uint %uint_8 %uint_8 %45 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
%55 = OpConstantComposite %v2uint %uint_240 %uint_240 %52 = OpConstantComposite %v2uint %uint_240 %uint_240
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%58 = OpConstantComposite %v2uint %uint_4 %uint_4 %55 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_12 = OpConstant %uint 12 %uint_12 = OpConstant %uint 12
%65 = OpConstantComposite %v2uint %uint_12 %uint_12 %62 = OpConstantComposite %v2uint %uint_12 %uint_12
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%68 = OpConstantComposite %v2uint %uint_2 %uint_2 %65 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%76 = OpConstantComposite %v2uint %uint_1 %uint_1 %73 = OpConstantComposite %v2uint %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%81 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295 %78 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%88 = OpTypeFunction %void %85 = OpTypeFunction %void
%93 = OpConstantNull %v2int
%_ptr_Function_v2int = OpTypePointer Function %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int
%96 = OpTypeFunction %v4float %92 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %v2int None %9 %tint_first_leading_bit = OpFunction %v2int None %9
%v = OpFunctionParameter %v2int %v = OpFunctionParameter %v2int
%14 = OpLabel %14 = OpLabel
%x = OpVariable %_ptr_Function_v2uint Function %28 %x = OpVariable %_ptr_Function_v2uint Function %27
%20 = OpSLessThan %v2bool %v %19 %19 = OpSLessThan %v2bool %v %18
%24 = OpNot %v2int %v %23 = OpNot %v2int %v
%23 = OpBitcast %v2uint %24 %22 = OpBitcast %v2uint %23
%25 = OpBitcast %v2uint %v %24 = OpBitcast %v2uint %v
%15 = OpSelect %v2uint %20 %23 %25 %15 = OpSelect %v2uint %19 %22 %24
OpStore %x %15 OpStore %x %15
%31 = OpLoad %v2uint %x %30 = OpLoad %v2uint %x
%34 = OpBitwiseAnd %v2uint %31 %33 %33 = OpBitwiseAnd %v2uint %30 %32
%30 = OpINotEqual %v2bool %34 %28 %29 = OpINotEqual %v2bool %33 %27
%29 = OpSelect %v2uint %30 %36 %38 %28 = OpSelect %v2uint %29 %35 %27
%39 = OpLoad %v2uint %x %36 = OpLoad %v2uint %x
%40 = OpShiftRightLogical %v2uint %39 %29 %37 = OpShiftRightLogical %v2uint %36 %28
OpStore %x %40 OpStore %x %37
%43 = OpLoad %v2uint %x %40 = OpLoad %v2uint %x
%46 = OpBitwiseAnd %v2uint %43 %45 %43 = OpBitwiseAnd %v2uint %40 %42
%42 = OpINotEqual %v2bool %46 %28 %39 = OpINotEqual %v2bool %43 %27
%41 = OpSelect %v2uint %42 %48 %38 %38 = OpSelect %v2uint %39 %45 %27
%49 = OpLoad %v2uint %x %46 = OpLoad %v2uint %x
%50 = OpShiftRightLogical %v2uint %49 %41 %47 = OpShiftRightLogical %v2uint %46 %38
OpStore %x %50 OpStore %x %47
%53 = OpLoad %v2uint %x %50 = OpLoad %v2uint %x
%56 = OpBitwiseAnd %v2uint %53 %55 %53 = OpBitwiseAnd %v2uint %50 %52
%52 = OpINotEqual %v2bool %56 %28 %49 = OpINotEqual %v2bool %53 %27
%51 = OpSelect %v2uint %52 %58 %38 %48 = OpSelect %v2uint %49 %55 %27
%59 = OpLoad %v2uint %x %56 = OpLoad %v2uint %x
%60 = OpShiftRightLogical %v2uint %59 %51 %57 = OpShiftRightLogical %v2uint %56 %48
OpStore %x %60 OpStore %x %57
%63 = OpLoad %v2uint %x %60 = OpLoad %v2uint %x
%66 = OpBitwiseAnd %v2uint %63 %65 %63 = OpBitwiseAnd %v2uint %60 %62
%62 = OpINotEqual %v2bool %66 %28 %59 = OpINotEqual %v2bool %63 %27
%61 = OpSelect %v2uint %62 %68 %38 %58 = OpSelect %v2uint %59 %65 %27
%69 = OpLoad %v2uint %x %66 = OpLoad %v2uint %x
%70 = OpShiftRightLogical %v2uint %69 %61 %67 = OpShiftRightLogical %v2uint %66 %58
OpStore %x %70 OpStore %x %67
%73 = OpLoad %v2uint %x %70 = OpLoad %v2uint %x
%74 = OpBitwiseAnd %v2uint %73 %68 %71 = OpBitwiseAnd %v2uint %70 %65
%72 = OpINotEqual %v2bool %74 %28 %69 = OpINotEqual %v2bool %71 %27
%71 = OpSelect %v2uint %72 %76 %38 %68 = OpSelect %v2uint %69 %73 %27
%78 = OpLoad %v2uint %x %75 = OpLoad %v2uint %x
%79 = OpIEqual %v2bool %78 %38 %76 = OpIEqual %v2bool %75 %27
%77 = OpSelect %v2uint %79 %81 %38 %74 = OpSelect %v2uint %76 %78 %27
%83 = OpBitwiseOr %v2uint %29 %41 %80 = OpBitwiseOr %v2uint %28 %38
%84 = OpBitwiseOr %v2uint %83 %51 %81 = OpBitwiseOr %v2uint %80 %48
%85 = OpBitwiseOr %v2uint %84 %61 %82 = OpBitwiseOr %v2uint %81 %58
%86 = OpBitwiseOr %v2uint %85 %71 %83 = OpBitwiseOr %v2uint %82 %68
%87 = OpBitwiseOr %v2uint %86 %77 %84 = OpBitwiseOr %v2uint %83 %74
%82 = OpBitcast %v2int %87 %79 = OpBitcast %v2int %84
OpReturnValue %82 OpReturnValue %79
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_a622c2 = OpFunction %void None %88 %firstLeadingBit_a622c2 = OpFunction %void None %85
%91 = OpLabel %88 = OpLabel
%res = OpVariable %_ptr_Function_v2int Function %93 %res = OpVariable %_ptr_Function_v2int Function %18
%92 = OpFunctionCall %v2int %tint_first_leading_bit %93 %89 = OpFunctionCall %v2int %tint_first_leading_bit %18
OpStore %res %92 OpStore %res %89
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %96 %vertex_main_inner = OpFunction %v4float None %92
%98 = OpLabel %94 = OpLabel
%99 = OpFunctionCall %void %firstLeadingBit_a622c2 %95 = OpFunctionCall %void %firstLeadingBit_a622c2
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %88 %vertex_main = OpFunction %void None %85
%101 = OpLabel %97 = OpLabel
%102 = OpFunctionCall %v4float %vertex_main_inner %98 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %102 OpStore %value %98
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %88 %fragment_main = OpFunction %void None %85
%105 = OpLabel %101 = OpLabel
%106 = OpFunctionCall %void %firstLeadingBit_a622c2 %102 = OpFunctionCall %void %firstLeadingBit_a622c2
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %88 %compute_main = OpFunction %void None %85
%108 = OpLabel %104 = OpLabel
%109 = OpFunctionCall %void %firstLeadingBit_a622c2 %105 = OpFunctionCall %void %firstLeadingBit_a622c2
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 110 ; Bound: 106
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -36,119 +36,115 @@
%9 = OpTypeFunction %v4int %v4int %9 = OpTypeFunction %v4int %v4int
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%v4uint = OpTypeVector %uint 4 %v4uint = OpTypeVector %uint 4
%int_0 = OpConstant %int 0 %18 = OpConstantNull %v4int
%19 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0
%bool = OpTypeBool %bool = OpTypeBool
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%_ptr_Function_v4uint = OpTypePointer Function %v4uint %_ptr_Function_v4uint = OpTypePointer Function %v4uint
%28 = OpConstantNull %v4uint %27 = OpConstantNull %v4uint
%uint_4294901760 = OpConstant %uint 4294901760 %uint_4294901760 = OpConstant %uint 4294901760
%33 = OpConstantComposite %v4uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %uint_4294901760 %32 = OpConstantComposite %v4uint %uint_4294901760 %uint_4294901760 %uint_4294901760 %uint_4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%36 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %35 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_0 = OpConstant %uint 0
%38 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%45 = OpConstantComposite %v4uint %uint_65280 %uint_65280 %uint_65280 %uint_65280 %42 = OpConstantComposite %v4uint %uint_65280 %uint_65280 %uint_65280 %uint_65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%48 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %45 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
%55 = OpConstantComposite %v4uint %uint_240 %uint_240 %uint_240 %uint_240 %52 = OpConstantComposite %v4uint %uint_240 %uint_240 %uint_240 %uint_240
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%58 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %55 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_12 = OpConstant %uint 12 %uint_12 = OpConstant %uint 12
%65 = OpConstantComposite %v4uint %uint_12 %uint_12 %uint_12 %uint_12 %62 = OpConstantComposite %v4uint %uint_12 %uint_12 %uint_12 %uint_12
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%68 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %65 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%76 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %73 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%81 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295 %78 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%88 = OpTypeFunction %void %85 = OpTypeFunction %void
%93 = OpConstantNull %v4int
%_ptr_Function_v4int = OpTypePointer Function %v4int %_ptr_Function_v4int = OpTypePointer Function %v4int
%96 = OpTypeFunction %v4float %92 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %v4int None %9 %tint_first_leading_bit = OpFunction %v4int None %9
%v = OpFunctionParameter %v4int %v = OpFunctionParameter %v4int
%14 = OpLabel %14 = OpLabel
%x = OpVariable %_ptr_Function_v4uint Function %28 %x = OpVariable %_ptr_Function_v4uint Function %27
%20 = OpSLessThan %v4bool %v %19 %19 = OpSLessThan %v4bool %v %18
%24 = OpNot %v4int %v %23 = OpNot %v4int %v
%23 = OpBitcast %v4uint %24 %22 = OpBitcast %v4uint %23
%25 = OpBitcast %v4uint %v %24 = OpBitcast %v4uint %v
%15 = OpSelect %v4uint %20 %23 %25 %15 = OpSelect %v4uint %19 %22 %24
OpStore %x %15 OpStore %x %15
%31 = OpLoad %v4uint %x %30 = OpLoad %v4uint %x
%34 = OpBitwiseAnd %v4uint %31 %33 %33 = OpBitwiseAnd %v4uint %30 %32
%30 = OpINotEqual %v4bool %34 %28 %29 = OpINotEqual %v4bool %33 %27
%29 = OpSelect %v4uint %30 %36 %38 %28 = OpSelect %v4uint %29 %35 %27
%39 = OpLoad %v4uint %x %36 = OpLoad %v4uint %x
%40 = OpShiftRightLogical %v4uint %39 %29 %37 = OpShiftRightLogical %v4uint %36 %28
OpStore %x %40 OpStore %x %37
%43 = OpLoad %v4uint %x %40 = OpLoad %v4uint %x
%46 = OpBitwiseAnd %v4uint %43 %45 %43 = OpBitwiseAnd %v4uint %40 %42
%42 = OpINotEqual %v4bool %46 %28 %39 = OpINotEqual %v4bool %43 %27
%41 = OpSelect %v4uint %42 %48 %38 %38 = OpSelect %v4uint %39 %45 %27
%49 = OpLoad %v4uint %x %46 = OpLoad %v4uint %x
%50 = OpShiftRightLogical %v4uint %49 %41 %47 = OpShiftRightLogical %v4uint %46 %38
OpStore %x %50 OpStore %x %47
%53 = OpLoad %v4uint %x %50 = OpLoad %v4uint %x
%56 = OpBitwiseAnd %v4uint %53 %55 %53 = OpBitwiseAnd %v4uint %50 %52
%52 = OpINotEqual %v4bool %56 %28 %49 = OpINotEqual %v4bool %53 %27
%51 = OpSelect %v4uint %52 %58 %38 %48 = OpSelect %v4uint %49 %55 %27
%59 = OpLoad %v4uint %x %56 = OpLoad %v4uint %x
%60 = OpShiftRightLogical %v4uint %59 %51 %57 = OpShiftRightLogical %v4uint %56 %48
OpStore %x %60 OpStore %x %57
%63 = OpLoad %v4uint %x %60 = OpLoad %v4uint %x
%66 = OpBitwiseAnd %v4uint %63 %65 %63 = OpBitwiseAnd %v4uint %60 %62
%62 = OpINotEqual %v4bool %66 %28 %59 = OpINotEqual %v4bool %63 %27
%61 = OpSelect %v4uint %62 %68 %38 %58 = OpSelect %v4uint %59 %65 %27
%69 = OpLoad %v4uint %x %66 = OpLoad %v4uint %x
%70 = OpShiftRightLogical %v4uint %69 %61 %67 = OpShiftRightLogical %v4uint %66 %58
OpStore %x %70 OpStore %x %67
%73 = OpLoad %v4uint %x %70 = OpLoad %v4uint %x
%74 = OpBitwiseAnd %v4uint %73 %68 %71 = OpBitwiseAnd %v4uint %70 %65
%72 = OpINotEqual %v4bool %74 %28 %69 = OpINotEqual %v4bool %71 %27
%71 = OpSelect %v4uint %72 %76 %38 %68 = OpSelect %v4uint %69 %73 %27
%78 = OpLoad %v4uint %x %75 = OpLoad %v4uint %x
%79 = OpIEqual %v4bool %78 %38 %76 = OpIEqual %v4bool %75 %27
%77 = OpSelect %v4uint %79 %81 %38 %74 = OpSelect %v4uint %76 %78 %27
%83 = OpBitwiseOr %v4uint %29 %41 %80 = OpBitwiseOr %v4uint %28 %38
%84 = OpBitwiseOr %v4uint %83 %51 %81 = OpBitwiseOr %v4uint %80 %48
%85 = OpBitwiseOr %v4uint %84 %61 %82 = OpBitwiseOr %v4uint %81 %58
%86 = OpBitwiseOr %v4uint %85 %71 %83 = OpBitwiseOr %v4uint %82 %68
%87 = OpBitwiseOr %v4uint %86 %77 %84 = OpBitwiseOr %v4uint %83 %74
%82 = OpBitcast %v4int %87 %79 = OpBitcast %v4int %84
OpReturnValue %82 OpReturnValue %79
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_c1f940 = OpFunction %void None %88 %firstLeadingBit_c1f940 = OpFunction %void None %85
%91 = OpLabel %88 = OpLabel
%res = OpVariable %_ptr_Function_v4int Function %93 %res = OpVariable %_ptr_Function_v4int Function %18
%92 = OpFunctionCall %v4int %tint_first_leading_bit %93 %89 = OpFunctionCall %v4int %tint_first_leading_bit %18
OpStore %res %92 OpStore %res %89
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %96 %vertex_main_inner = OpFunction %v4float None %92
%98 = OpLabel %94 = OpLabel
%99 = OpFunctionCall %void %firstLeadingBit_c1f940 %95 = OpFunctionCall %void %firstLeadingBit_c1f940
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %88 %vertex_main = OpFunction %void None %85
%101 = OpLabel %97 = OpLabel
%102 = OpFunctionCall %v4float %vertex_main_inner %98 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %102 OpStore %value %98
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %88 %fragment_main = OpFunction %void None %85
%105 = OpLabel %101 = OpLabel
%106 = OpFunctionCall %void %firstLeadingBit_c1f940 %102 = OpFunctionCall %void %firstLeadingBit_c1f940
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %88 %compute_main = OpFunction %void None %85
%108 = OpLabel %104 = OpLabel
%109 = OpFunctionCall %void %firstLeadingBit_c1f940 %105 = OpFunctionCall %void %firstLeadingBit_c1f940
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 86 ; Bound: 85
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -38,7 +38,6 @@
%bool = OpTypeBool %bool = OpTypeBool
%uint_4294901760 = OpConstant %uint 4294901760 %uint_4294901760 = OpConstant %uint 4294901760
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_0 = OpConstant %uint 0
%uint_65280 = OpConstant %uint 65280 %uint_65280 = OpConstant %uint 65280
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%uint_240 = OpConstant %uint 240 %uint_240 = OpConstant %uint 240
@ -48,8 +47,8 @@
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%void = OpTypeVoid %void = OpTypeVoid
%66 = OpTypeFunction %void %65 = OpTypeFunction %void
%72 = OpTypeFunction %v4float %71 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_leading_bit = OpFunction %uint None %9 %tint_first_leading_bit = OpFunction %uint None %9
%v = OpFunctionParameter %uint %v = OpFunctionParameter %uint
@ -59,71 +58,71 @@
%20 = OpLoad %uint %x %20 = OpLoad %uint %x
%22 = OpBitwiseAnd %uint %20 %uint_4294901760 %22 = OpBitwiseAnd %uint %20 %uint_4294901760
%18 = OpINotEqual %bool %22 %16 %18 = OpINotEqual %bool %22 %16
%17 = OpSelect %uint %18 %uint_16 %uint_0 %17 = OpSelect %uint %18 %uint_16 %16
%25 = OpLoad %uint %x %24 = OpLoad %uint %x
%26 = OpShiftRightLogical %uint %25 %17 %25 = OpShiftRightLogical %uint %24 %17
OpStore %x %26 OpStore %x %25
%29 = OpLoad %uint %x %28 = OpLoad %uint %x
%31 = OpBitwiseAnd %uint %29 %uint_65280 %30 = OpBitwiseAnd %uint %28 %uint_65280
%28 = OpINotEqual %bool %31 %16 %27 = OpINotEqual %bool %30 %16
%27 = OpSelect %uint %28 %uint_8 %uint_0 %26 = OpSelect %uint %27 %uint_8 %16
%33 = OpLoad %uint %x %32 = OpLoad %uint %x
%34 = OpShiftRightLogical %uint %33 %27 %33 = OpShiftRightLogical %uint %32 %26
OpStore %x %34 OpStore %x %33
%37 = OpLoad %uint %x %36 = OpLoad %uint %x
%39 = OpBitwiseAnd %uint %37 %uint_240 %38 = OpBitwiseAnd %uint %36 %uint_240
%36 = OpINotEqual %bool %39 %16 %35 = OpINotEqual %bool %38 %16
%35 = OpSelect %uint %36 %uint_4 %uint_0 %34 = OpSelect %uint %35 %uint_4 %16
%41 = OpLoad %uint %x %40 = OpLoad %uint %x
%42 = OpShiftRightLogical %uint %41 %35 %41 = OpShiftRightLogical %uint %40 %34
OpStore %x %42 OpStore %x %41
%45 = OpLoad %uint %x %44 = OpLoad %uint %x
%47 = OpBitwiseAnd %uint %45 %uint_12 %46 = OpBitwiseAnd %uint %44 %uint_12
%44 = OpINotEqual %bool %47 %16 %43 = OpINotEqual %bool %46 %16
%43 = OpSelect %uint %44 %uint_2 %uint_0 %42 = OpSelect %uint %43 %uint_2 %16
%49 = OpLoad %uint %x %48 = OpLoad %uint %x
%50 = OpShiftRightLogical %uint %49 %43 %49 = OpShiftRightLogical %uint %48 %42
OpStore %x %50 OpStore %x %49
%53 = OpLoad %uint %x %52 = OpLoad %uint %x
%54 = OpBitwiseAnd %uint %53 %uint_2 %53 = OpBitwiseAnd %uint %52 %uint_2
%52 = OpINotEqual %bool %54 %16 %51 = OpINotEqual %bool %53 %16
%51 = OpSelect %uint %52 %uint_1 %uint_0 %50 = OpSelect %uint %51 %uint_1 %16
%57 = OpLoad %uint %x %56 = OpLoad %uint %x
%58 = OpIEqual %bool %57 %uint_0 %57 = OpIEqual %bool %56 %16
%56 = OpSelect %uint %58 %uint_4294967295 %uint_0 %55 = OpSelect %uint %57 %uint_4294967295 %16
%61 = OpBitwiseOr %uint %17 %27 %60 = OpBitwiseOr %uint %17 %26
%62 = OpBitwiseOr %uint %61 %35 %61 = OpBitwiseOr %uint %60 %34
%63 = OpBitwiseOr %uint %62 %43 %62 = OpBitwiseOr %uint %61 %42
%64 = OpBitwiseOr %uint %63 %51 %63 = OpBitwiseOr %uint %62 %50
%65 = OpBitwiseOr %uint %64 %56 %64 = OpBitwiseOr %uint %63 %55
OpReturnValue %65 OpReturnValue %64
OpFunctionEnd OpFunctionEnd
%firstLeadingBit_f0779d = OpFunction %void None %66 %firstLeadingBit_f0779d = OpFunction %void None %65
%69 = OpLabel %68 = OpLabel
%res = OpVariable %_ptr_Function_uint Function %16 %res = OpVariable %_ptr_Function_uint Function %16
%70 = OpFunctionCall %uint %tint_first_leading_bit %uint_1 %69 = OpFunctionCall %uint %tint_first_leading_bit %uint_1
OpStore %res %70 OpStore %res %69
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %72 %vertex_main_inner = OpFunction %v4float None %71
%74 = OpLabel %73 = OpLabel
%75 = OpFunctionCall %void %firstLeadingBit_f0779d %74 = OpFunctionCall %void %firstLeadingBit_f0779d
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %66 %vertex_main = OpFunction %void None %65
%77 = OpLabel %76 = OpLabel
%78 = OpFunctionCall %v4float %vertex_main_inner %77 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %78 OpStore %value %77
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %66 %fragment_main = OpFunction %void None %65
%81 = OpLabel %80 = OpLabel
%82 = OpFunctionCall %void %firstLeadingBit_f0779d %81 = OpFunctionCall %void %firstLeadingBit_f0779d
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %66 %compute_main = OpFunction %void None %65
%84 = OpLabel %83 = OpLabel
%85 = OpFunctionCall %void %firstLeadingBit_f0779d %84 = OpFunctionCall %void %firstLeadingBit_f0779d
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 100 ; Bound: 98
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -40,29 +40,27 @@
%v4bool = OpTypeVector %bool 4 %v4bool = OpTypeVector %bool 4
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%25 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535 %25 = OpConstantComposite %v4uint %uint_65535 %uint_65535 %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%28 = OpConstantComposite %v4uint %uint_0 %uint_0 %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%30 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16 %28 = OpConstantComposite %v4uint %uint_16 %uint_16 %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%37 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255 %35 = OpConstantComposite %v4uint %uint_255 %uint_255 %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8 %38 = OpConstantComposite %v4uint %uint_8 %uint_8 %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%47 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15 %45 = OpConstantComposite %v4uint %uint_15 %uint_15 %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%50 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4 %48 = OpConstantComposite %v4uint %uint_4 %uint_4 %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%57 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3 %55 = OpConstantComposite %v4uint %uint_3 %uint_3 %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%60 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2 %58 = OpConstantComposite %v4uint %uint_2 %uint_2 %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1 %65 = OpConstantComposite %v4uint %uint_1 %uint_1 %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%73 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295 %71 = OpConstantComposite %v4uint %uint_4294967295 %uint_4294967295 %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%80 = OpTypeFunction %void %78 = OpTypeFunction %void
%86 = OpTypeFunction %v4float %84 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_trailing_bit = OpFunction %v4uint None %9 %tint_first_trailing_bit = OpFunction %v4uint None %9
%v = OpFunctionParameter %v4uint %v = OpFunctionParameter %v4uint
@ -72,71 +70,71 @@
%23 = OpLoad %v4uint %x %23 = OpLoad %v4uint %x
%26 = OpBitwiseAnd %v4uint %23 %25 %26 = OpBitwiseAnd %v4uint %23 %25
%20 = OpINotEqual %v4bool %26 %18 %20 = OpINotEqual %v4bool %26 %18
%19 = OpSelect %v4uint %20 %28 %30 %19 = OpSelect %v4uint %20 %18 %28
%31 = OpLoad %v4uint %x %29 = OpLoad %v4uint %x
%32 = OpShiftRightLogical %v4uint %31 %19 %30 = OpShiftRightLogical %v4uint %29 %19
OpStore %x %32 OpStore %x %30
%35 = OpLoad %v4uint %x %33 = OpLoad %v4uint %x
%38 = OpBitwiseAnd %v4uint %35 %37 %36 = OpBitwiseAnd %v4uint %33 %35
%34 = OpINotEqual %v4bool %38 %18 %32 = OpINotEqual %v4bool %36 %18
%33 = OpSelect %v4uint %34 %28 %40 %31 = OpSelect %v4uint %32 %18 %38
%41 = OpLoad %v4uint %x %39 = OpLoad %v4uint %x
%42 = OpShiftRightLogical %v4uint %41 %33 %40 = OpShiftRightLogical %v4uint %39 %31
OpStore %x %42 OpStore %x %40
%45 = OpLoad %v4uint %x %43 = OpLoad %v4uint %x
%48 = OpBitwiseAnd %v4uint %45 %47 %46 = OpBitwiseAnd %v4uint %43 %45
%44 = OpINotEqual %v4bool %48 %18 %42 = OpINotEqual %v4bool %46 %18
%43 = OpSelect %v4uint %44 %28 %50 %41 = OpSelect %v4uint %42 %18 %48
%51 = OpLoad %v4uint %x %49 = OpLoad %v4uint %x
%52 = OpShiftRightLogical %v4uint %51 %43 %50 = OpShiftRightLogical %v4uint %49 %41
OpStore %x %52 OpStore %x %50
%55 = OpLoad %v4uint %x %53 = OpLoad %v4uint %x
%58 = OpBitwiseAnd %v4uint %55 %57 %56 = OpBitwiseAnd %v4uint %53 %55
%54 = OpINotEqual %v4bool %58 %18 %52 = OpINotEqual %v4bool %56 %18
%53 = OpSelect %v4uint %54 %28 %60 %51 = OpSelect %v4uint %52 %18 %58
%61 = OpLoad %v4uint %x %59 = OpLoad %v4uint %x
%62 = OpShiftRightLogical %v4uint %61 %53 %60 = OpShiftRightLogical %v4uint %59 %51
OpStore %x %62 OpStore %x %60
%65 = OpLoad %v4uint %x %63 = OpLoad %v4uint %x
%68 = OpBitwiseAnd %v4uint %65 %67 %66 = OpBitwiseAnd %v4uint %63 %65
%64 = OpINotEqual %v4bool %68 %18 %62 = OpINotEqual %v4bool %66 %18
%63 = OpSelect %v4uint %64 %28 %67 %61 = OpSelect %v4uint %62 %18 %65
%70 = OpLoad %v4uint %x %68 = OpLoad %v4uint %x
%71 = OpIEqual %v4bool %70 %28 %69 = OpIEqual %v4bool %68 %18
%69 = OpSelect %v4uint %71 %73 %28 %67 = OpSelect %v4uint %69 %71 %18
%75 = OpBitwiseOr %v4uint %19 %33 %73 = OpBitwiseOr %v4uint %19 %31
%76 = OpBitwiseOr %v4uint %75 %43 %74 = OpBitwiseOr %v4uint %73 %41
%77 = OpBitwiseOr %v4uint %76 %53 %75 = OpBitwiseOr %v4uint %74 %51
%78 = OpBitwiseOr %v4uint %77 %63 %76 = OpBitwiseOr %v4uint %75 %61
%79 = OpBitwiseOr %v4uint %78 %69 %77 = OpBitwiseOr %v4uint %76 %67
OpReturnValue %79 OpReturnValue %77
OpFunctionEnd OpFunctionEnd
%firstTrailingBit_110f2c = OpFunction %void None %80 %firstTrailingBit_110f2c = OpFunction %void None %78
%83 = OpLabel %81 = OpLabel
%res = OpVariable %_ptr_Function_v4uint Function %18 %res = OpVariable %_ptr_Function_v4uint Function %18
%84 = OpFunctionCall %v4uint %tint_first_trailing_bit %18 %82 = OpFunctionCall %v4uint %tint_first_trailing_bit %18
OpStore %res %84 OpStore %res %82
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %86 %vertex_main_inner = OpFunction %v4float None %84
%88 = OpLabel %86 = OpLabel
%89 = OpFunctionCall %void %firstTrailingBit_110f2c %87 = OpFunctionCall %void %firstTrailingBit_110f2c
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %80 %vertex_main = OpFunction %void None %78
%91 = OpLabel %89 = OpLabel
%92 = OpFunctionCall %v4float %vertex_main_inner %90 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %92 OpStore %value %90
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %80 %fragment_main = OpFunction %void None %78
%95 = OpLabel %93 = OpLabel
%96 = OpFunctionCall %void %firstTrailingBit_110f2c %94 = OpFunctionCall %void %firstTrailingBit_110f2c
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %80 %compute_main = OpFunction %void None %78
%98 = OpLabel %96 = OpLabel
%99 = OpFunctionCall %void %firstTrailingBit_110f2c %97 = OpFunctionCall %void %firstTrailingBit_110f2c
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 91 ; Bound: 90
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -38,7 +38,6 @@
%18 = OpConstantNull %uint %18 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%uint_0 = OpConstant %uint 0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
@ -49,11 +48,11 @@
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%void = OpTypeVoid %void = OpTypeVoid
%68 = OpTypeFunction %void %67 = OpTypeFunction %void
%int_1 = OpConstant %int 1 %int_1 = OpConstant %int 1
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%76 = OpConstantNull %int %75 = OpConstantNull %int
%77 = OpTypeFunction %v4float %76 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_trailing_bit = OpFunction %int None %9 %tint_first_trailing_bit = OpFunction %int None %9
%v = OpFunctionParameter %int %v = OpFunctionParameter %int
@ -64,72 +63,72 @@
%22 = OpLoad %uint %x %22 = OpLoad %uint %x
%24 = OpBitwiseAnd %uint %22 %uint_65535 %24 = OpBitwiseAnd %uint %22 %uint_65535
%20 = OpINotEqual %bool %24 %18 %20 = OpINotEqual %bool %24 %18
%19 = OpSelect %uint %20 %uint_0 %uint_16 %19 = OpSelect %uint %20 %18 %uint_16
%27 = OpLoad %uint %x %26 = OpLoad %uint %x
%28 = OpShiftRightLogical %uint %27 %19 %27 = OpShiftRightLogical %uint %26 %19
OpStore %x %28 OpStore %x %27
%31 = OpLoad %uint %x %30 = OpLoad %uint %x
%33 = OpBitwiseAnd %uint %31 %uint_255 %32 = OpBitwiseAnd %uint %30 %uint_255
%30 = OpINotEqual %bool %33 %18 %29 = OpINotEqual %bool %32 %18
%29 = OpSelect %uint %30 %uint_0 %uint_8 %28 = OpSelect %uint %29 %18 %uint_8
%35 = OpLoad %uint %x %34 = OpLoad %uint %x
%36 = OpShiftRightLogical %uint %35 %29 %35 = OpShiftRightLogical %uint %34 %28
OpStore %x %36 OpStore %x %35
%39 = OpLoad %uint %x %38 = OpLoad %uint %x
%41 = OpBitwiseAnd %uint %39 %uint_15 %40 = OpBitwiseAnd %uint %38 %uint_15
%38 = OpINotEqual %bool %41 %18 %37 = OpINotEqual %bool %40 %18
%37 = OpSelect %uint %38 %uint_0 %uint_4 %36 = OpSelect %uint %37 %18 %uint_4
%43 = OpLoad %uint %x %42 = OpLoad %uint %x
%44 = OpShiftRightLogical %uint %43 %37 %43 = OpShiftRightLogical %uint %42 %36
OpStore %x %44 OpStore %x %43
%47 = OpLoad %uint %x %46 = OpLoad %uint %x
%49 = OpBitwiseAnd %uint %47 %uint_3 %48 = OpBitwiseAnd %uint %46 %uint_3
%46 = OpINotEqual %bool %49 %18 %45 = OpINotEqual %bool %48 %18
%45 = OpSelect %uint %46 %uint_0 %uint_2 %44 = OpSelect %uint %45 %18 %uint_2
%51 = OpLoad %uint %x %50 = OpLoad %uint %x
%52 = OpShiftRightLogical %uint %51 %45 %51 = OpShiftRightLogical %uint %50 %44
OpStore %x %52 OpStore %x %51
%55 = OpLoad %uint %x %54 = OpLoad %uint %x
%57 = OpBitwiseAnd %uint %55 %uint_1 %56 = OpBitwiseAnd %uint %54 %uint_1
%54 = OpINotEqual %bool %57 %18 %53 = OpINotEqual %bool %56 %18
%53 = OpSelect %uint %54 %uint_0 %uint_1 %52 = OpSelect %uint %53 %18 %uint_1
%59 = OpLoad %uint %x %58 = OpLoad %uint %x
%60 = OpIEqual %bool %59 %uint_0 %59 = OpIEqual %bool %58 %18
%58 = OpSelect %uint %60 %uint_4294967295 %uint_0 %57 = OpSelect %uint %59 %uint_4294967295 %18
%63 = OpBitwiseOr %uint %19 %29 %62 = OpBitwiseOr %uint %19 %28
%64 = OpBitwiseOr %uint %63 %37 %63 = OpBitwiseOr %uint %62 %36
%65 = OpBitwiseOr %uint %64 %45 %64 = OpBitwiseOr %uint %63 %44
%66 = OpBitwiseOr %uint %65 %53 %65 = OpBitwiseOr %uint %64 %52
%67 = OpBitwiseOr %uint %66 %58 %66 = OpBitwiseOr %uint %65 %57
%62 = OpBitcast %int %67 %61 = OpBitcast %int %66
OpReturnValue %62 OpReturnValue %61
OpFunctionEnd OpFunctionEnd
%firstTrailingBit_3a2acc = OpFunction %void None %68 %firstTrailingBit_3a2acc = OpFunction %void None %67
%71 = OpLabel %70 = OpLabel
%res = OpVariable %_ptr_Function_int Function %76 %res = OpVariable %_ptr_Function_int Function %75
%72 = OpFunctionCall %int %tint_first_trailing_bit %int_1 %71 = OpFunctionCall %int %tint_first_trailing_bit %int_1
OpStore %res %72 OpStore %res %71
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %77 %vertex_main_inner = OpFunction %v4float None %76
%79 = OpLabel %78 = OpLabel
%80 = OpFunctionCall %void %firstTrailingBit_3a2acc %79 = OpFunctionCall %void %firstTrailingBit_3a2acc
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %68 %vertex_main = OpFunction %void None %67
%82 = OpLabel %81 = OpLabel
%83 = OpFunctionCall %v4float %vertex_main_inner %82 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %83 OpStore %value %82
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %68 %fragment_main = OpFunction %void None %67
%86 = OpLabel %85 = OpLabel
%87 = OpFunctionCall %void %firstTrailingBit_3a2acc %86 = OpFunctionCall %void %firstTrailingBit_3a2acc
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %68 %compute_main = OpFunction %void None %67
%89 = OpLabel %88 = OpLabel
%90 = OpFunctionCall %void %firstTrailingBit_3a2acc %89 = OpFunctionCall %void %firstTrailingBit_3a2acc
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 100 ; Bound: 98
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -40,29 +40,27 @@
%v2bool = OpTypeVector %bool 2 %v2bool = OpTypeVector %bool 2
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%25 = OpConstantComposite %v2uint %uint_65535 %uint_65535 %25 = OpConstantComposite %v2uint %uint_65535 %uint_65535
%uint_0 = OpConstant %uint 0
%28 = OpConstantComposite %v2uint %uint_0 %uint_0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%30 = OpConstantComposite %v2uint %uint_16 %uint_16 %28 = OpConstantComposite %v2uint %uint_16 %uint_16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%37 = OpConstantComposite %v2uint %uint_255 %uint_255 %35 = OpConstantComposite %v2uint %uint_255 %uint_255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
%40 = OpConstantComposite %v2uint %uint_8 %uint_8 %38 = OpConstantComposite %v2uint %uint_8 %uint_8
%uint_15 = OpConstant %uint 15 %uint_15 = OpConstant %uint 15
%47 = OpConstantComposite %v2uint %uint_15 %uint_15 %45 = OpConstantComposite %v2uint %uint_15 %uint_15
%uint_4 = OpConstant %uint 4 %uint_4 = OpConstant %uint 4
%50 = OpConstantComposite %v2uint %uint_4 %uint_4 %48 = OpConstantComposite %v2uint %uint_4 %uint_4
%uint_3 = OpConstant %uint 3 %uint_3 = OpConstant %uint 3
%57 = OpConstantComposite %v2uint %uint_3 %uint_3 %55 = OpConstantComposite %v2uint %uint_3 %uint_3
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%60 = OpConstantComposite %v2uint %uint_2 %uint_2 %58 = OpConstantComposite %v2uint %uint_2 %uint_2
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%67 = OpConstantComposite %v2uint %uint_1 %uint_1 %65 = OpConstantComposite %v2uint %uint_1 %uint_1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%73 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295 %71 = OpConstantComposite %v2uint %uint_4294967295 %uint_4294967295
%void = OpTypeVoid %void = OpTypeVoid
%80 = OpTypeFunction %void %78 = OpTypeFunction %void
%86 = OpTypeFunction %v4float %84 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_trailing_bit = OpFunction %v2uint None %9 %tint_first_trailing_bit = OpFunction %v2uint None %9
%v = OpFunctionParameter %v2uint %v = OpFunctionParameter %v2uint
@ -72,71 +70,71 @@
%23 = OpLoad %v2uint %x %23 = OpLoad %v2uint %x
%26 = OpBitwiseAnd %v2uint %23 %25 %26 = OpBitwiseAnd %v2uint %23 %25
%20 = OpINotEqual %v2bool %26 %18 %20 = OpINotEqual %v2bool %26 %18
%19 = OpSelect %v2uint %20 %28 %30 %19 = OpSelect %v2uint %20 %18 %28
%31 = OpLoad %v2uint %x %29 = OpLoad %v2uint %x
%32 = OpShiftRightLogical %v2uint %31 %19 %30 = OpShiftRightLogical %v2uint %29 %19
OpStore %x %32 OpStore %x %30
%35 = OpLoad %v2uint %x %33 = OpLoad %v2uint %x
%38 = OpBitwiseAnd %v2uint %35 %37 %36 = OpBitwiseAnd %v2uint %33 %35
%34 = OpINotEqual %v2bool %38 %18 %32 = OpINotEqual %v2bool %36 %18
%33 = OpSelect %v2uint %34 %28 %40 %31 = OpSelect %v2uint %32 %18 %38
%41 = OpLoad %v2uint %x %39 = OpLoad %v2uint %x
%42 = OpShiftRightLogical %v2uint %41 %33 %40 = OpShiftRightLogical %v2uint %39 %31
OpStore %x %42 OpStore %x %40
%45 = OpLoad %v2uint %x %43 = OpLoad %v2uint %x
%48 = OpBitwiseAnd %v2uint %45 %47 %46 = OpBitwiseAnd %v2uint %43 %45
%44 = OpINotEqual %v2bool %48 %18 %42 = OpINotEqual %v2bool %46 %18
%43 = OpSelect %v2uint %44 %28 %50 %41 = OpSelect %v2uint %42 %18 %48
%51 = OpLoad %v2uint %x %49 = OpLoad %v2uint %x
%52 = OpShiftRightLogical %v2uint %51 %43 %50 = OpShiftRightLogical %v2uint %49 %41
OpStore %x %52 OpStore %x %50
%55 = OpLoad %v2uint %x %53 = OpLoad %v2uint %x
%58 = OpBitwiseAnd %v2uint %55 %57 %56 = OpBitwiseAnd %v2uint %53 %55
%54 = OpINotEqual %v2bool %58 %18 %52 = OpINotEqual %v2bool %56 %18
%53 = OpSelect %v2uint %54 %28 %60 %51 = OpSelect %v2uint %52 %18 %58
%61 = OpLoad %v2uint %x %59 = OpLoad %v2uint %x
%62 = OpShiftRightLogical %v2uint %61 %53 %60 = OpShiftRightLogical %v2uint %59 %51
OpStore %x %62 OpStore %x %60
%65 = OpLoad %v2uint %x %63 = OpLoad %v2uint %x
%68 = OpBitwiseAnd %v2uint %65 %67 %66 = OpBitwiseAnd %v2uint %63 %65
%64 = OpINotEqual %v2bool %68 %18 %62 = OpINotEqual %v2bool %66 %18
%63 = OpSelect %v2uint %64 %28 %67 %61 = OpSelect %v2uint %62 %18 %65
%70 = OpLoad %v2uint %x %68 = OpLoad %v2uint %x
%71 = OpIEqual %v2bool %70 %28 %69 = OpIEqual %v2bool %68 %18
%69 = OpSelect %v2uint %71 %73 %28 %67 = OpSelect %v2uint %69 %71 %18
%75 = OpBitwiseOr %v2uint %19 %33 %73 = OpBitwiseOr %v2uint %19 %31
%76 = OpBitwiseOr %v2uint %75 %43 %74 = OpBitwiseOr %v2uint %73 %41
%77 = OpBitwiseOr %v2uint %76 %53 %75 = OpBitwiseOr %v2uint %74 %51
%78 = OpBitwiseOr %v2uint %77 %63 %76 = OpBitwiseOr %v2uint %75 %61
%79 = OpBitwiseOr %v2uint %78 %69 %77 = OpBitwiseOr %v2uint %76 %67
OpReturnValue %79 OpReturnValue %77
OpFunctionEnd OpFunctionEnd
%firstTrailingBit_45eb10 = OpFunction %void None %80 %firstTrailingBit_45eb10 = OpFunction %void None %78
%83 = OpLabel %81 = OpLabel
%res = OpVariable %_ptr_Function_v2uint Function %18 %res = OpVariable %_ptr_Function_v2uint Function %18
%84 = OpFunctionCall %v2uint %tint_first_trailing_bit %18 %82 = OpFunctionCall %v2uint %tint_first_trailing_bit %18
OpStore %res %84 OpStore %res %82
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %86 %vertex_main_inner = OpFunction %v4float None %84
%88 = OpLabel %86 = OpLabel
%89 = OpFunctionCall %void %firstTrailingBit_45eb10 %87 = OpFunctionCall %void %firstTrailingBit_45eb10
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %80 %vertex_main = OpFunction %void None %78
%91 = OpLabel %89 = OpLabel
%92 = OpFunctionCall %v4float %vertex_main_inner %90 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %92 OpStore %value %90
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %80 %fragment_main = OpFunction %void None %78
%95 = OpLabel %93 = OpLabel
%96 = OpFunctionCall %void %firstTrailingBit_45eb10 %94 = OpFunctionCall %void %firstTrailingBit_45eb10
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %80 %compute_main = OpFunction %void None %78
%98 = OpLabel %96 = OpLabel
%99 = OpFunctionCall %void %firstTrailingBit_45eb10 %97 = OpFunctionCall %void %firstTrailingBit_45eb10
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 87 ; Bound: 86
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -37,7 +37,6 @@
%17 = OpConstantNull %uint %17 = OpConstantNull %uint
%bool = OpTypeBool %bool = OpTypeBool
%uint_65535 = OpConstant %uint 65535 %uint_65535 = OpConstant %uint 65535
%uint_0 = OpConstant %uint 0
%uint_16 = OpConstant %uint 16 %uint_16 = OpConstant %uint 16
%uint_255 = OpConstant %uint 255 %uint_255 = OpConstant %uint 255
%uint_8 = OpConstant %uint 8 %uint_8 = OpConstant %uint 8
@ -48,8 +47,8 @@
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%uint_4294967295 = OpConstant %uint 4294967295 %uint_4294967295 = OpConstant %uint 4294967295
%void = OpTypeVoid %void = OpTypeVoid
%67 = OpTypeFunction %void %66 = OpTypeFunction %void
%73 = OpTypeFunction %v4float %72 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%tint_first_trailing_bit = OpFunction %uint None %9 %tint_first_trailing_bit = OpFunction %uint None %9
%v = OpFunctionParameter %uint %v = OpFunctionParameter %uint
@ -59,71 +58,71 @@
%21 = OpLoad %uint %x %21 = OpLoad %uint %x
%23 = OpBitwiseAnd %uint %21 %uint_65535 %23 = OpBitwiseAnd %uint %21 %uint_65535
%19 = OpINotEqual %bool %23 %17 %19 = OpINotEqual %bool %23 %17
%18 = OpSelect %uint %19 %uint_0 %uint_16 %18 = OpSelect %uint %19 %17 %uint_16
%26 = OpLoad %uint %x %25 = OpLoad %uint %x
%27 = OpShiftRightLogical %uint %26 %18 %26 = OpShiftRightLogical %uint %25 %18
OpStore %x %27 OpStore %x %26
%30 = OpLoad %uint %x %29 = OpLoad %uint %x
%32 = OpBitwiseAnd %uint %30 %uint_255 %31 = OpBitwiseAnd %uint %29 %uint_255
%29 = OpINotEqual %bool %32 %17 %28 = OpINotEqual %bool %31 %17
%28 = OpSelect %uint %29 %uint_0 %uint_8 %27 = OpSelect %uint %28 %17 %uint_8
%34 = OpLoad %uint %x %33 = OpLoad %uint %x
%35 = OpShiftRightLogical %uint %34 %28 %34 = OpShiftRightLogical %uint %33 %27
OpStore %x %35 OpStore %x %34
%38 = OpLoad %uint %x %37 = OpLoad %uint %x
%40 = OpBitwiseAnd %uint %38 %uint_15 %39 = OpBitwiseAnd %uint %37 %uint_15
%37 = OpINotEqual %bool %40 %17 %36 = OpINotEqual %bool %39 %17
%36 = OpSelect %uint %37 %uint_0 %uint_4 %35 = OpSelect %uint %36 %17 %uint_4
%42 = OpLoad %uint %x %41 = OpLoad %uint %x
%43 = OpShiftRightLogical %uint %42 %36 %42 = OpShiftRightLogical %uint %41 %35
OpStore %x %43 OpStore %x %42
%46 = OpLoad %uint %x %45 = OpLoad %uint %x
%48 = OpBitwiseAnd %uint %46 %uint_3 %47 = OpBitwiseAnd %uint %45 %uint_3
%45 = OpINotEqual %bool %48 %17 %44 = OpINotEqual %bool %47 %17
%44 = OpSelect %uint %45 %uint_0 %uint_2 %43 = OpSelect %uint %44 %17 %uint_2
%50 = OpLoad %uint %x %49 = OpLoad %uint %x
%51 = OpShiftRightLogical %uint %50 %44 %50 = OpShiftRightLogical %uint %49 %43
OpStore %x %51 OpStore %x %50
%54 = OpLoad %uint %x %53 = OpLoad %uint %x
%56 = OpBitwiseAnd %uint %54 %uint_1 %55 = OpBitwiseAnd %uint %53 %uint_1
%53 = OpINotEqual %bool %56 %17 %52 = OpINotEqual %bool %55 %17
%52 = OpSelect %uint %53 %uint_0 %uint_1 %51 = OpSelect %uint %52 %17 %uint_1
%58 = OpLoad %uint %x %57 = OpLoad %uint %x
%59 = OpIEqual %bool %58 %uint_0 %58 = OpIEqual %bool %57 %17
%57 = OpSelect %uint %59 %uint_4294967295 %uint_0 %56 = OpSelect %uint %58 %uint_4294967295 %17
%62 = OpBitwiseOr %uint %18 %28 %61 = OpBitwiseOr %uint %18 %27
%63 = OpBitwiseOr %uint %62 %36 %62 = OpBitwiseOr %uint %61 %35
%64 = OpBitwiseOr %uint %63 %44 %63 = OpBitwiseOr %uint %62 %43
%65 = OpBitwiseOr %uint %64 %52 %64 = OpBitwiseOr %uint %63 %51
%66 = OpBitwiseOr %uint %65 %57 %65 = OpBitwiseOr %uint %64 %56
OpReturnValue %66 OpReturnValue %65
OpFunctionEnd OpFunctionEnd
%firstTrailingBit_47d475 = OpFunction %void None %67 %firstTrailingBit_47d475 = OpFunction %void None %66
%70 = OpLabel %69 = OpLabel
%res = OpVariable %_ptr_Function_uint Function %17 %res = OpVariable %_ptr_Function_uint Function %17
%71 = OpFunctionCall %uint %tint_first_trailing_bit %uint_1 %70 = OpFunctionCall %uint %tint_first_trailing_bit %uint_1
OpStore %res %71 OpStore %res %70
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%vertex_main_inner = OpFunction %v4float None %73 %vertex_main_inner = OpFunction %v4float None %72
%75 = OpLabel %74 = OpLabel
%76 = OpFunctionCall %void %firstTrailingBit_47d475 %75 = OpFunctionCall %void %firstTrailingBit_47d475
OpReturnValue %5 OpReturnValue %5
OpFunctionEnd OpFunctionEnd
%vertex_main = OpFunction %void None %67 %vertex_main = OpFunction %void None %66
%78 = OpLabel %77 = OpLabel
%79 = OpFunctionCall %v4float %vertex_main_inner %78 = OpFunctionCall %v4float %vertex_main_inner
OpStore %value %79 OpStore %value %78
OpStore %vertex_point_size %float_1 OpStore %vertex_point_size %float_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%fragment_main = OpFunction %void None %67 %fragment_main = OpFunction %void None %66
%82 = OpLabel %81 = OpLabel
%83 = OpFunctionCall %void %firstTrailingBit_47d475 %82 = OpFunctionCall %void %firstTrailingBit_47d475
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%compute_main = OpFunction %void None %67 %compute_main = OpFunction %void None %66
%85 = OpLabel %84 = OpLabel
%86 = OpFunctionCall %void %firstTrailingBit_47d475 %85 = OpFunctionCall %void %firstTrailingBit_47d475
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

Some files were not shown because too many files have changed in this diff Show More