tint: Rename `frexp().sig` to `frexp().fract`
Fixed: tint:1757 Change-Id: Iacce6ab0f08f89abbe5831e6f2285a0c964e74d7 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110100 Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Dan Sinclair <dsinclair@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Auto-Submit: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
1ef277db0e
commit
10fae7ac79
|
@ -1,5 +1,11 @@
|
|||
# Tint changes during Origin Trial
|
||||
|
||||
## Changes for M110
|
||||
|
||||
### Deprecated Features
|
||||
|
||||
* The `sig` member of the return type of `frexp()` has been renamed to `fract`. [tint:1757](crbug.com/tint/1757)
|
||||
|
||||
## Changes for M109
|
||||
|
||||
### Breaking changes
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "src/tint/sem/member_accessor_expression.h"
|
||||
#include "src/tint/sem/sampled_texture.h"
|
||||
#include "src/tint/sem/statement.h"
|
||||
#include "src/tint/sem/test_helper.h"
|
||||
#include "src/tint/sem/variable.h"
|
||||
|
||||
using ::testing::ElementsAre;
|
||||
|
@ -927,12 +928,12 @@ TEST_F(ResolverBuiltinFloatTest, FrexpScalar_f32) {
|
|||
ASSERT_NE(ty, nullptr);
|
||||
ASSERT_EQ(ty->Members().size(), 2u);
|
||||
|
||||
auto* sig = ty->Members()[0];
|
||||
EXPECT_TRUE(sig->Type()->Is<sem::F32>());
|
||||
EXPECT_EQ(sig->Offset(), 0u);
|
||||
EXPECT_EQ(sig->Size(), 4u);
|
||||
EXPECT_EQ(sig->Align(), 4u);
|
||||
EXPECT_EQ(sig->Name(), Sym("sig"));
|
||||
auto* fract = ty->Members()[0];
|
||||
EXPECT_TRUE(fract->Type()->Is<sem::F32>());
|
||||
EXPECT_EQ(fract->Offset(), 0u);
|
||||
EXPECT_EQ(fract->Size(), 4u);
|
||||
EXPECT_EQ(fract->Align(), 4u);
|
||||
EXPECT_EQ(fract->Name(), Sym("fract"));
|
||||
|
||||
auto* exp = ty->Members()[1];
|
||||
EXPECT_TRUE(exp->Type()->Is<sem::I32>());
|
||||
|
@ -958,12 +959,12 @@ TEST_F(ResolverBuiltinFloatTest, FrexpScalar_f16) {
|
|||
ASSERT_NE(ty, nullptr);
|
||||
ASSERT_EQ(ty->Members().size(), 2u);
|
||||
|
||||
auto* sig = ty->Members()[0];
|
||||
EXPECT_TRUE(sig->Type()->Is<sem::F16>());
|
||||
EXPECT_EQ(sig->Offset(), 0u);
|
||||
EXPECT_EQ(sig->Size(), 2u);
|
||||
EXPECT_EQ(sig->Align(), 2u);
|
||||
EXPECT_EQ(sig->Name(), Sym("sig"));
|
||||
auto* fract = ty->Members()[0];
|
||||
EXPECT_TRUE(fract->Type()->Is<sem::F16>());
|
||||
EXPECT_EQ(fract->Offset(), 0u);
|
||||
EXPECT_EQ(fract->Size(), 2u);
|
||||
EXPECT_EQ(fract->Align(), 2u);
|
||||
EXPECT_EQ(fract->Name(), Sym("fract"));
|
||||
|
||||
auto* exp = ty->Members()[1];
|
||||
EXPECT_TRUE(exp->Type()->Is<sem::I32>());
|
||||
|
@ -987,14 +988,14 @@ TEST_F(ResolverBuiltinFloatTest, FrexpVector_f32) {
|
|||
ASSERT_NE(ty, nullptr);
|
||||
ASSERT_EQ(ty->Members().size(), 2u);
|
||||
|
||||
auto* sig = ty->Members()[0];
|
||||
ASSERT_TRUE(sig->Type()->Is<sem::Vector>());
|
||||
EXPECT_EQ(sig->Type()->As<sem::Vector>()->Width(), 3u);
|
||||
EXPECT_TRUE(sig->Type()->As<sem::Vector>()->type()->Is<sem::F32>());
|
||||
EXPECT_EQ(sig->Offset(), 0u);
|
||||
EXPECT_EQ(sig->Size(), 12u);
|
||||
EXPECT_EQ(sig->Align(), 16u);
|
||||
EXPECT_EQ(sig->Name(), Sym("sig"));
|
||||
auto* fract = ty->Members()[0];
|
||||
ASSERT_TRUE(fract->Type()->Is<sem::Vector>());
|
||||
EXPECT_EQ(fract->Type()->As<sem::Vector>()->Width(), 3u);
|
||||
EXPECT_TRUE(fract->Type()->As<sem::Vector>()->type()->Is<sem::F32>());
|
||||
EXPECT_EQ(fract->Offset(), 0u);
|
||||
EXPECT_EQ(fract->Size(), 12u);
|
||||
EXPECT_EQ(fract->Align(), 16u);
|
||||
EXPECT_EQ(fract->Name(), Sym("fract"));
|
||||
|
||||
auto* exp = ty->Members()[1];
|
||||
ASSERT_TRUE(exp->Type()->Is<sem::Vector>());
|
||||
|
@ -1022,14 +1023,14 @@ TEST_F(ResolverBuiltinFloatTest, FrexpVector_f16) {
|
|||
ASSERT_NE(ty, nullptr);
|
||||
ASSERT_EQ(ty->Members().size(), 2u);
|
||||
|
||||
auto* sig = ty->Members()[0];
|
||||
ASSERT_TRUE(sig->Type()->Is<sem::Vector>());
|
||||
EXPECT_EQ(sig->Type()->As<sem::Vector>()->Width(), 3u);
|
||||
EXPECT_TRUE(sig->Type()->As<sem::Vector>()->type()->Is<sem::F16>());
|
||||
EXPECT_EQ(sig->Offset(), 0u);
|
||||
EXPECT_EQ(sig->Size(), 6u);
|
||||
EXPECT_EQ(sig->Align(), 8u);
|
||||
EXPECT_EQ(sig->Name(), Sym("sig"));
|
||||
auto* fract = ty->Members()[0];
|
||||
ASSERT_TRUE(fract->Type()->Is<sem::Vector>());
|
||||
EXPECT_EQ(fract->Type()->As<sem::Vector>()->Width(), 3u);
|
||||
EXPECT_TRUE(fract->Type()->As<sem::Vector>()->type()->Is<sem::F16>());
|
||||
EXPECT_EQ(fract->Offset(), 0u);
|
||||
EXPECT_EQ(fract->Size(), 6u);
|
||||
EXPECT_EQ(fract->Align(), 8u);
|
||||
EXPECT_EQ(fract->Name(), Sym("fract"));
|
||||
|
||||
auto* exp = ty->Members()[1];
|
||||
ASSERT_TRUE(exp->Type()->Is<sem::Vector>());
|
||||
|
@ -1044,6 +1045,29 @@ TEST_F(ResolverBuiltinFloatTest, FrexpVector_f16) {
|
|||
EXPECT_EQ(ty->SizeNoPadding(), 28u);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/tint/1757): Remove once deprecation period for `frexp().sig` is over
|
||||
TEST_F(ResolverBuiltinFloatTest, FrexpVector_sig) {
|
||||
Enable(ast::Extension::kF16);
|
||||
|
||||
auto* call = Call("frexp", vec3<f16>());
|
||||
auto* expr = MemberAccessor(call, "sig");
|
||||
WrapInFunction(expr);
|
||||
|
||||
EXPECT_TRUE(r()->Resolve()) << r()->error();
|
||||
|
||||
ASSERT_NE(TypeOf(call), nullptr);
|
||||
auto* ty = TypeOf(call)->As<sem::Struct>();
|
||||
ASSERT_NE(ty, nullptr);
|
||||
ASSERT_EQ(ty->Members().size(), 2u);
|
||||
|
||||
auto* sig = ty->Members()[0];
|
||||
EXPECT_TYPE(sig->Type(), TypeOf(expr));
|
||||
|
||||
auto* access = Sem().Get<sem::StructMemberAccess>(expr);
|
||||
ASSERT_NE(access, nullptr);
|
||||
EXPECT_EQ(access->Member(), sig);
|
||||
}
|
||||
|
||||
TEST_F(ResolverBuiltinFloatTest, Frexp_Error_FirstParamInt) {
|
||||
GlobalVar("v", ty.i32(), ast::AddressSpace::kWorkgroup);
|
||||
auto* call = Call("frexp", 1_i, AddressOf("v"));
|
||||
|
|
|
@ -856,7 +856,7 @@ const sem::Struct* build_frexp_result(MatchState& state, const sem::Type* el) {
|
|||
display_name = "__frexp_result";
|
||||
}
|
||||
auto* i32 = state.builder.create<sem::I32>();
|
||||
return build_struct(state, display_name, {{"sig", el}, {"exp", i32}});
|
||||
return build_struct(state, display_name, {{"fract", el}, {"exp", i32}});
|
||||
}
|
||||
const sem::Struct* build_frexp_result_vec(MatchState& state, Number& n, const sem::Type* el) {
|
||||
std::string display_name;
|
||||
|
@ -867,7 +867,7 @@ const sem::Struct* build_frexp_result_vec(MatchState& state, Number& n, const se
|
|||
}
|
||||
auto* vec = state.builder.create<sem::Vector>(el, n.Value());
|
||||
auto* vec_i32 = state.builder.create<sem::Vector>(state.builder.create<sem::I32>(), n.Value());
|
||||
return build_struct(state, display_name, {{"sig", vec}, {"exp", vec_i32}});
|
||||
return build_struct(state, display_name, {{"fract", vec}, {"exp", vec_i32}});
|
||||
}
|
||||
const sem::Struct* build_atomic_compare_exchange_result(MatchState& state, const sem::Type* ty) {
|
||||
return build_struct(
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -86,6 +86,7 @@
|
|||
#include "src/tint/utils/math.h"
|
||||
#include "src/tint/utils/reverse.h"
|
||||
#include "src/tint/utils/scoped_assignment.h"
|
||||
#include "src/tint/utils/string.h"
|
||||
#include "src/tint/utils/transform.h"
|
||||
#include "src/tint/utils/vector.h"
|
||||
|
||||
|
@ -2380,18 +2381,29 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e
|
|||
const sem::StructMember* member = nullptr;
|
||||
for (auto* m : str->Members()) {
|
||||
if (m->Name() == symbol) {
|
||||
ty = m->Type();
|
||||
member = m;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ty == nullptr) {
|
||||
// TODO(crbug.com/tint/1757): Remove
|
||||
if (utils::HasPrefix(builder_->Symbols().NameFor(str->Name()), "__frexp_result")) {
|
||||
if (builder_->Symbols().NameFor(symbol) == "sig") {
|
||||
AddWarning(
|
||||
"use of deprecated language feature: 'sig' has been renamed to 'fract'",
|
||||
expr->member->source);
|
||||
member = str->Members()[0];
|
||||
}
|
||||
}
|
||||
|
||||
if (member == nullptr) {
|
||||
AddError("struct member " + builder_->Symbols().NameFor(symbol) + " not found",
|
||||
expr->source);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ty = member->Type();
|
||||
|
||||
// If we're extracting from a reference, we return a reference.
|
||||
if (auto* ref = structure->As<sem::Reference>()) {
|
||||
ty = builder_->create<sem::Reference>(ty, ref->AddressSpace(), ref->Access());
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
namespace tint::utils {
|
||||
|
||||
size_t Distance(const std::string& str_a, const std::string& str_b) {
|
||||
size_t Distance(std::string_view str_a, std::string_view str_b) {
|
||||
const auto len_a = str_a.size();
|
||||
const auto len_b = str_b.size();
|
||||
|
||||
|
|
|
@ -25,10 +25,10 @@ namespace tint::utils {
|
|||
/// @param replacement the replacement string to use instead of `substr`
|
||||
/// @returns `str` with all occurrences of `substr` replaced with `replacement`
|
||||
[[nodiscard]] inline std::string ReplaceAll(std::string str,
|
||||
const std::string& substr,
|
||||
const std::string& replacement) {
|
||||
std::string_view substr,
|
||||
std::string_view replacement) {
|
||||
size_t pos = 0;
|
||||
while ((pos = str.find(substr, pos)) != std::string::npos) {
|
||||
while ((pos = str.find(substr, pos)) != std::string_view::npos) {
|
||||
str.replace(pos, substr.length(), replacement);
|
||||
pos += replacement.length();
|
||||
}
|
||||
|
@ -44,10 +44,17 @@ std::string ToString(const T& value) {
|
|||
return s.str();
|
||||
}
|
||||
|
||||
/// @param str the input string
|
||||
/// @param prefix the prefix string
|
||||
/// @returns true iff @p str has the prefix @p prefix
|
||||
inline size_t HasPrefix(std::string_view str, std::string_view prefix) {
|
||||
return str.compare(0, prefix.size(), prefix) == 0;
|
||||
}
|
||||
|
||||
/// @param a the first string
|
||||
/// @param b the second string
|
||||
/// @returns the Levenshtein distance between @p a and @p b
|
||||
size_t Distance(const std::string& a, const std::string& b);
|
||||
size_t Distance(std::string_view a, std::string_view b);
|
||||
|
||||
} // namespace tint::utils
|
||||
|
||||
|
|
|
@ -37,6 +37,15 @@ TEST(StringTest, ToString) {
|
|||
EXPECT_EQ("hello", ToString("hello"));
|
||||
}
|
||||
|
||||
TEST(StringTest, HasPrefix) {
|
||||
EXPECT_TRUE(HasPrefix("abc", "a"));
|
||||
EXPECT_TRUE(HasPrefix("abc", "ab"));
|
||||
EXPECT_TRUE(HasPrefix("abc", "abc"));
|
||||
EXPECT_FALSE(HasPrefix("abc", "abc1"));
|
||||
EXPECT_FALSE(HasPrefix("abc", "ac"));
|
||||
EXPECT_FALSE(HasPrefix("abc", "b"));
|
||||
}
|
||||
|
||||
TEST(StringTest, Distance) {
|
||||
EXPECT_EQ(Distance("hello world", "hello world"), 0u);
|
||||
EXPECT_EQ(Distance("hello world", "helloworld"), 1u);
|
||||
|
|
|
@ -1264,7 +1264,7 @@ bool GeneratorImpl::EmitFrexpCall(std::ostream& out,
|
|||
}
|
||||
l << " result;";
|
||||
}
|
||||
line(b) << "result.sig = frexp(" << params[0] << ", result.exp);";
|
||||
line(b) << "result.fract = frexp(" << params[0] << ", result.exp);";
|
||||
line(b) << "return result;";
|
||||
return true;
|
||||
});
|
||||
|
@ -2697,14 +2697,24 @@ bool GeneratorImpl::EmitMemberAccessor(std::ostream& out,
|
|||
}
|
||||
out << ".";
|
||||
|
||||
// Swizzles output the name directly
|
||||
if (builder_.Sem().Get(expr)->Is<sem::Swizzle>()) {
|
||||
out << builder_.Symbols().NameFor(expr->member->symbol);
|
||||
} else if (!EmitExpression(out, expr->member)) {
|
||||
return false;
|
||||
}
|
||||
auto* sem = builder_.Sem().Get(expr);
|
||||
|
||||
return true;
|
||||
return Switch(
|
||||
sem,
|
||||
[&](const sem::Swizzle*) {
|
||||
// Swizzles output the name directly
|
||||
out << builder_.Symbols().NameFor(expr->member->symbol);
|
||||
return true;
|
||||
},
|
||||
[&](const sem::StructMemberAccess* member_access) {
|
||||
out << program_->Symbols().NameFor(member_access->Member()->Name());
|
||||
return true;
|
||||
},
|
||||
[&](Default) {
|
||||
TINT_ICE(Writer, diagnostics_)
|
||||
<< "unknown member access type: " << sem->TypeInfo().name;
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
bool GeneratorImpl::EmitReturn(const ast::ReturnStatement* stmt) {
|
||||
|
|
|
@ -561,14 +561,16 @@ TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Scalar_f32) {
|
|||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_THAT(gen.result(), HasSubstr(R"(
|
||||
float sig;
|
||||
EXPECT_EQ(gen.result(), R"(#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -578,7 +580,11 @@ void test_function() {
|
|||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
)"));
|
||||
void main() {
|
||||
test_function();
|
||||
return;
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Scalar_f16) {
|
||||
|
@ -590,17 +596,17 @@ TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Scalar_f16) {
|
|||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_THAT(gen.result(), HasSubstr(R"(#version 310 es
|
||||
EXPECT_EQ(gen.result(), R"(#version 310 es
|
||||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -613,7 +619,8 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|||
void main() {
|
||||
test_function();
|
||||
return;
|
||||
)"));
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Vector_f32) {
|
||||
|
@ -623,16 +630,16 @@ TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Vector_f32) {
|
|||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_THAT(gen.result(), HasSubstr(R"(
|
||||
EXPECT_EQ(gen.result(), R"(#version 310 es
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -645,7 +652,8 @@ layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|||
void main() {
|
||||
test_function();
|
||||
return;
|
||||
)"));
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Vector_f16) {
|
||||
|
@ -657,17 +665,17 @@ TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Vector_f16) {
|
|||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_THAT(gen.result(), HasSubstr(R"(#version 310 es
|
||||
EXPECT_EQ(gen.result(), R"(#version 310 es
|
||||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -681,7 +689,40 @@ void main() {
|
|||
test_function();
|
||||
return;
|
||||
}
|
||||
)"));
|
||||
)");
|
||||
}
|
||||
|
||||
// TODO(crbug.com/tint/1757): Remove once deprecation period for `frexp().sig` is over
|
||||
TEST_F(GlslGeneratorImplTest_Builtin, Frexp_Sig_Deprecation) {
|
||||
WrapInFunction(MemberAccessor(Call("frexp", 1_f), "sig"));
|
||||
|
||||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void test_function() {
|
||||
float tint_symbol = tint_frexp(1.0f).fract;
|
||||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void main() {
|
||||
test_function();
|
||||
return;
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
TEST_F(GlslGeneratorImplTest_Builtin, Degrees_Scalar_f32) {
|
||||
|
@ -1349,7 +1390,6 @@ void main() {
|
|||
)");
|
||||
}
|
||||
|
||||
|
||||
TEST_F(GlslGeneratorImplTest_Builtin, QuantizeToF16_Vec4) {
|
||||
GlobalVar("v", vec4<f32>(2_f), ast::AddressSpace::kPrivate);
|
||||
WrapInFunction(Call("quantizeToF16", "v"));
|
||||
|
|
|
@ -1793,14 +1793,14 @@ bool GeneratorImpl::EmitFrexpCall(std::ostream& out,
|
|||
}
|
||||
|
||||
line(b) << member_type << " exp;";
|
||||
line(b) << member_type << " sig = frexp(" << in << ", exp);";
|
||||
line(b) << member_type << " fract = frexp(" << in << ", exp);";
|
||||
{
|
||||
auto l = line(b);
|
||||
if (!EmitType(l, builtin->ReturnType(), ast::AddressSpace::kNone,
|
||||
ast::Access::kUndefined, "")) {
|
||||
return false;
|
||||
}
|
||||
l << " result = {sig, int" << width << "(exp)};";
|
||||
l << " result = {fract, int" << width << "(exp)};";
|
||||
}
|
||||
line(b) << "return result;";
|
||||
return true;
|
||||
|
@ -3471,14 +3471,24 @@ bool GeneratorImpl::EmitMemberAccessor(std::ostream& out,
|
|||
}
|
||||
out << ".";
|
||||
|
||||
// Swizzles output the name directly
|
||||
if (builder_.Sem().Get(expr)->Is<sem::Swizzle>()) {
|
||||
out << builder_.Symbols().NameFor(expr->member->symbol);
|
||||
} else if (!EmitExpression(out, expr->member)) {
|
||||
return false;
|
||||
}
|
||||
auto* sem = builder_.Sem().Get(expr);
|
||||
|
||||
return true;
|
||||
return Switch(
|
||||
sem,
|
||||
[&](const sem::Swizzle*) {
|
||||
// Swizzles output the name directly
|
||||
out << builder_.Symbols().NameFor(expr->member->symbol);
|
||||
return true;
|
||||
},
|
||||
[&](const sem::StructMemberAccess* member_access) {
|
||||
out << program_->Symbols().NameFor(member_access->Member()->Name());
|
||||
return true;
|
||||
},
|
||||
[&](Default) {
|
||||
TINT_ICE(Writer, diagnostics_)
|
||||
<< "unknown member access type: " << sem->TypeInfo().name;
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
bool GeneratorImpl::EmitReturn(const ast::ReturnStatement* stmt) {
|
||||
|
|
|
@ -493,13 +493,13 @@ TEST_F(HlslGeneratorImplTest_Builtin, Frexp_Scalar_f32) {
|
|||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -521,13 +521,13 @@ TEST_F(HlslGeneratorImplTest_Builtin, Frexp_Scalar_f16) {
|
|||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
float16_t exp;
|
||||
float16_t sig = frexp(param_0, exp);
|
||||
frexp_result_f16 result = {sig, int(exp)};
|
||||
float16_t fract = frexp(param_0, exp);
|
||||
frexp_result_f16 result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -547,13 +547,13 @@ TEST_F(HlslGeneratorImplTest_Builtin, Frexp_Vector_f32) {
|
|||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
float3 exp;
|
||||
float3 sig = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {sig, int3(exp)};
|
||||
float3 fract = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -575,13 +575,13 @@ TEST_F(HlslGeneratorImplTest_Builtin, Frexp_Vector_f16) {
|
|||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(struct frexp_result_vec3_f16 {
|
||||
vector<float16_t, 3> sig;
|
||||
vector<float16_t, 3> fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3_f16 tint_frexp(vector<float16_t, 3> param_0) {
|
||||
vector<float16_t, 3> exp;
|
||||
vector<float16_t, 3> sig = frexp(param_0, exp);
|
||||
frexp_result_vec3_f16 result = {sig, int3(exp)};
|
||||
vector<float16_t, 3> fract = frexp(param_0, exp);
|
||||
frexp_result_vec3_f16 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -593,6 +593,32 @@ void test_function() {
|
|||
)");
|
||||
}
|
||||
|
||||
// TODO(crbug.com/tint/1757): Remove once deprecation period for `frexp().sig` is over
|
||||
TEST_F(HlslGeneratorImplTest_Builtin, Frexp_Sig_Deprecation) {
|
||||
WrapInFunction(MemberAccessor(Call("frexp", 1_f), "sig"));
|
||||
|
||||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void test_function() {
|
||||
const float tint_symbol = tint_frexp(1.0f).fract;
|
||||
return;
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
TEST_F(HlslGeneratorImplTest_Builtin, Degrees_Scalar_f32) {
|
||||
auto* val = Var("val", ty.f32());
|
||||
auto* call = Call("degrees", val);
|
||||
|
|
|
@ -1377,7 +1377,7 @@ bool GeneratorImpl::EmitFrexpCall(std::ostream& out,
|
|||
}
|
||||
|
||||
line(b) << StructName(builtin->ReturnType()->As<sem::Struct>()) << " result;";
|
||||
line(b) << "result.sig = frexp(" << in << ", result.exp);";
|
||||
line(b) << "result.fract = frexp(" << in << ", result.exp);";
|
||||
line(b) << "return result;";
|
||||
return true;
|
||||
});
|
||||
|
@ -2331,40 +2331,45 @@ bool GeneratorImpl::EmitMemberAccessor(std::ostream& out,
|
|||
return true;
|
||||
};
|
||||
|
||||
auto& sem = program_->Sem();
|
||||
auto* sem = builder_.Sem().Get(expr);
|
||||
|
||||
if (auto* swizzle = sem.Get(expr)->As<sem::Swizzle>()) {
|
||||
// Metal 1.x does not support swizzling of packed vector types.
|
||||
// For single element swizzles, we can use the index operator.
|
||||
// For multi-element swizzles, we need to cast to a regular vector type
|
||||
// first. Note that we do not currently allow assignments to swizzles, so
|
||||
// the casting which will convert the l-value to r-value is fine.
|
||||
if (swizzle->Indices().Length() == 1) {
|
||||
return Switch(
|
||||
sem,
|
||||
[&](const sem::Swizzle* swizzle) {
|
||||
// Metal 1.x does not support swizzling of packed vector types.
|
||||
// For single element swizzles, we can use the index operator.
|
||||
// For multi-element swizzles, we need to cast to a regular vector type
|
||||
// first. Note that we do not currently allow assignments to swizzles, so
|
||||
// the casting which will convert the l-value to r-value is fine.
|
||||
if (swizzle->Indices().Length() == 1) {
|
||||
if (!write_lhs()) {
|
||||
return false;
|
||||
}
|
||||
out << "[" << swizzle->Indices()[0] << "]";
|
||||
} else {
|
||||
if (!EmitType(out, swizzle->Object()->Type()->UnwrapRef(), "")) {
|
||||
return false;
|
||||
}
|
||||
out << "(";
|
||||
if (!write_lhs()) {
|
||||
return false;
|
||||
}
|
||||
out << ")." << program_->Symbols().NameFor(expr->member->symbol);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
[&](const sem::StructMemberAccess* member_access) {
|
||||
if (!write_lhs()) {
|
||||
return false;
|
||||
}
|
||||
out << "[" << swizzle->Indices()[0] << "]";
|
||||
} else {
|
||||
if (!EmitType(out, sem.Get(expr->structure)->Type()->UnwrapRef(), "")) {
|
||||
return false;
|
||||
}
|
||||
out << "(";
|
||||
if (!write_lhs()) {
|
||||
return false;
|
||||
}
|
||||
out << ")." << program_->Symbols().NameFor(expr->member->symbol);
|
||||
}
|
||||
} else {
|
||||
if (!write_lhs()) {
|
||||
out << "." << program_->Symbols().NameFor(member_access->Member()->Name());
|
||||
return true;
|
||||
},
|
||||
[&](Default) {
|
||||
TINT_ICE(Writer, diagnostics_)
|
||||
<< "unknown member access type: " << sem->TypeInfo().name;
|
||||
return false;
|
||||
}
|
||||
out << ".";
|
||||
if (!EmitExpression(out, expr->member)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
bool GeneratorImpl::EmitReturn(const ast::ReturnStatement* stmt) {
|
||||
|
|
|
@ -537,12 +537,12 @@ TEST_F(MslGeneratorImplTest, Frexp_Scalar_f32) {
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -568,12 +568,12 @@ TEST_F(MslGeneratorImplTest, Frexp_Scalar_f16) {
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_f16 {
|
||||
half sig;
|
||||
half fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result_f16 tint_frexp(half param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -597,12 +597,12 @@ TEST_F(MslGeneratorImplTest, Frexp_Vector_f32) {
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -628,12 +628,12 @@ TEST_F(MslGeneratorImplTest, Frexp_Vector_f16) {
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
half3 sig;
|
||||
half3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3_f16 tint_frexp(half3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -645,6 +645,35 @@ kernel void test_function() {
|
|||
)");
|
||||
}
|
||||
|
||||
// TODO(crbug.com/tint/1757): Remove once deprecation period for `frexp().sig` is over
|
||||
TEST_F(MslGeneratorImplTest, Frexp_Sig_Deprecation) {
|
||||
WrapInFunction(MemberAccessor(Call("frexp", 1_f), "sig"));
|
||||
|
||||
GeneratorImpl& gen = SanitizeAndBuild();
|
||||
|
||||
ASSERT_TRUE(gen.Generate()) << gen.error();
|
||||
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
kernel void test_function() {
|
||||
float const tint_symbol = tint_frexp(1.0f).fract;
|
||||
return;
|
||||
}
|
||||
|
||||
)");
|
||||
}
|
||||
|
||||
TEST_F(MslGeneratorImplTest, Degrees_Scalar_f32) {
|
||||
auto* val = Var("val", ty.f32());
|
||||
auto* call = Call("degrees", val);
|
||||
|
|
|
@ -1764,7 +1764,7 @@ OpExecutionMode %3 OriginUpperLeft
|
|||
OpName %3 "a_func"
|
||||
OpName %10 "vec"
|
||||
OpName %14 "__frexp_result_vec2"
|
||||
OpMemberName %14 0 "sig"
|
||||
OpMemberName %14 0 "fract"
|
||||
OpMemberName %14 1 "exp"
|
||||
OpMemberDecorate %14 0 Offset 0
|
||||
OpMemberDecorate %14 1 Offset 8
|
||||
|
@ -1824,7 +1824,7 @@ OpExecutionMode %3 OriginUpperLeft
|
|||
OpName %3 "a_func"
|
||||
OpName %10 "vec"
|
||||
OpName %14 "__frexp_result_vec2_f16"
|
||||
OpMemberName %14 0 "sig"
|
||||
OpMemberName %14 0 "fract"
|
||||
OpMemberName %14 1 "exp"
|
||||
OpMemberDecorate %14 0 Offset 0
|
||||
OpMemberDecorate %14 1 Offset 8
|
||||
|
@ -1854,6 +1854,78 @@ OpFunctionEnd
|
|||
Validate(b);
|
||||
}
|
||||
|
||||
// TODO(crbug.com/tint/1757): Remove once deprecation period for `frexp().sig` is over
|
||||
TEST_F(BuiltinBuilderTest, Frexp_Sig_Deprecation) {
|
||||
WrapInFunction(MemberAccessor(Call("frexp", 1_f), "sig"));
|
||||
|
||||
auto* vec = Var("vec", vec2<f32>(1_f, 2_f));
|
||||
Func("a_func", utils::Empty, ty.void_(),
|
||||
utils::Vector{
|
||||
Decl(vec),
|
||||
Decl(Let("s", MemberAccessor(Call("frexp", vec), "sig"))),
|
||||
},
|
||||
utils::Vector{
|
||||
Stage(ast::PipelineStage::kFragment),
|
||||
});
|
||||
|
||||
spirv::Builder& b = Build();
|
||||
|
||||
ASSERT_TRUE(b.Build()) << b.error();
|
||||
auto got = DumpBuilder(b);
|
||||
auto* expect = R"(OpCapability Shader
|
||||
%9 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %3 "test_function"
|
||||
OpEntryPoint Fragment %12 "a_func"
|
||||
OpExecutionMode %3 LocalSize 1 1 1
|
||||
OpExecutionMode %12 OriginUpperLeft
|
||||
OpName %3 "test_function"
|
||||
OpName %6 "__frexp_result"
|
||||
OpMemberName %6 0 "fract"
|
||||
OpMemberName %6 1 "exp"
|
||||
OpName %12 "a_func"
|
||||
OpName %17 "vec"
|
||||
OpName %21 "__frexp_result_vec2"
|
||||
OpMemberName %21 0 "fract"
|
||||
OpMemberName %21 1 "exp"
|
||||
OpMemberDecorate %6 0 Offset 0
|
||||
OpMemberDecorate %6 1 Offset 4
|
||||
OpMemberDecorate %21 0 Offset 0
|
||||
OpMemberDecorate %21 1 Offset 8
|
||||
%2 = OpTypeVoid
|
||||
%1 = OpTypeFunction %2
|
||||
%7 = OpTypeFloat 32
|
||||
%8 = OpTypeInt 32 1
|
||||
%6 = OpTypeStruct %7 %8
|
||||
%10 = OpConstant %7 1
|
||||
%14 = OpTypeVector %7 2
|
||||
%15 = OpConstant %7 2
|
||||
%16 = OpConstantComposite %14 %10 %15
|
||||
%18 = OpTypePointer Function %14
|
||||
%19 = OpConstantNull %14
|
||||
%22 = OpTypeVector %8 2
|
||||
%21 = OpTypeStruct %14 %22
|
||||
%3 = OpFunction %2 None %1
|
||||
%4 = OpLabel
|
||||
%5 = OpExtInst %6 %9 FrexpStruct %10
|
||||
%11 = OpCompositeExtract %7 %5 0
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
%12 = OpFunction %2 None %1
|
||||
%13 = OpLabel
|
||||
%17 = OpVariable %18 Function %19
|
||||
OpStore %17 %16
|
||||
%23 = OpLoad %14 %17
|
||||
%20 = OpExtInst %21 %9 FrexpStruct %23
|
||||
%24 = OpCompositeExtract %14 %20 0
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
)";
|
||||
EXPECT_EQ(expect, got);
|
||||
|
||||
Validate(b);
|
||||
}
|
||||
|
||||
TEST_F(BuiltinBuilderTest, Call_QuantizeToF16_Scalar) {
|
||||
GlobalVar("v", Expr(2_f), ast::AddressSpace::kPrivate);
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
// TODO(crbug.com/tint/1757): Remove this test once the deprecation period for `frexp().sig` is over
|
||||
@compute @workgroup_size(1)
|
||||
fn main() {
|
||||
let res = frexp(1.23);
|
||||
let exp : i32 = res.exp;
|
||||
let sig : f32 = res.sig;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
bug/tint/1757.wgsl:6:25 warning: use of deprecated language feature: 'sig' has been renamed to 'fract'
|
||||
let sig : f32 = res.sig;
|
||||
^^^
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
const frexp_result res = tint_frexp(1.230000019f);
|
||||
const int exp = res.exp;
|
||||
const float sig = res.fract;
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
bug/tint/1757.wgsl:6:25 warning: use of deprecated language feature: 'sig' has been renamed to 'fract'
|
||||
let sig : f32 = res.sig;
|
||||
^^^
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
[numthreads(1, 1, 1)]
|
||||
void main() {
|
||||
const frexp_result res = tint_frexp(1.230000019f);
|
||||
const int exp = res.exp;
|
||||
const float sig = res.fract;
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
bug/tint/1757.wgsl:6:25 warning: use of deprecated language feature: 'sig' has been renamed to 'fract'
|
||||
let sig : f32 = res.sig;
|
||||
^^^
|
||||
|
||||
#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void tint_symbol() {
|
||||
frexp_result res = tint_frexp(1.230000019f);
|
||||
int tint_symbol_1 = res.exp;
|
||||
float sig = res.fract;
|
||||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void main() {
|
||||
tint_symbol();
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
bug/tint/1757.wgsl:6:25 warning: use of deprecated language feature: 'sig' has been renamed to 'fract'
|
||||
let sig : f32 = res.sig;
|
||||
^^^
|
||||
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct frexp_result {
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
kernel void tint_symbol() {
|
||||
frexp_result const res = tint_frexp(1.230000019f);
|
||||
int const exp = res.exp;
|
||||
float const sig = res.fract;
|
||||
return;
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
bug/tint/1757.wgsl:6:25 warning: use of deprecated language feature: 'sig' has been renamed to 'fract'
|
||||
let sig : f32 = res.sig;
|
||||
^^^
|
||||
|
||||
; SPIR-V
|
||||
; Version: 1.3
|
||||
; Generator: Google Tint Compiler; 0
|
||||
; Bound: 13
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%9 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpName %main "main"
|
||||
OpName %__frexp_result "__frexp_result"
|
||||
OpMemberName %__frexp_result 0 "fract"
|
||||
OpMemberName %__frexp_result 1 "exp"
|
||||
OpMemberDecorate %__frexp_result 0 Offset 0
|
||||
OpMemberDecorate %__frexp_result 1 Offset 4
|
||||
%void = OpTypeVoid
|
||||
%1 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%int = OpTypeInt 32 1
|
||||
%__frexp_result = OpTypeStruct %float %int
|
||||
%float_1_23000002 = OpConstant %float 1.23000002
|
||||
%main = OpFunction %void None %1
|
||||
%4 = OpLabel
|
||||
%5 = OpExtInst %__frexp_result %9 FrexpStruct %float_1_23000002
|
||||
%11 = OpCompositeExtract %int %5 1
|
||||
%12 = OpCompositeExtract %float %5 0
|
||||
OpReturn
|
||||
OpFunctionEnd
|
|
@ -0,0 +1,10 @@
|
|||
bug/tint/1757.wgsl:6:25 warning: use of deprecated language feature: 'sig' has been renamed to 'fract'
|
||||
let sig : f32 = res.sig;
|
||||
^^^
|
||||
|
||||
@compute @workgroup_size(1)
|
||||
fn main() {
|
||||
let res = frexp(1.23);
|
||||
let exp : i32 = res.exp;
|
||||
let sig : f32 = res.sig;
|
||||
}
|
|
@ -2,5 +2,5 @@
|
|||
fn main() {
|
||||
let res = frexp(1.23);
|
||||
let exp : i32 = res.exp;
|
||||
let sig : f32 = res.sig;
|
||||
let fract : f32 = res.fract;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -13,6 +13,6 @@ frexp_result tint_frexp(float param_0) {
|
|||
void main() {
|
||||
const frexp_result res = tint_frexp(1.230000019f);
|
||||
const int exp = res.exp;
|
||||
const float sig = res.sig;
|
||||
const float fract = res.fract;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -13,6 +13,6 @@ frexp_result tint_frexp(float param_0) {
|
|||
void main() {
|
||||
const frexp_result res = tint_frexp(1.230000019f);
|
||||
const int exp = res.exp;
|
||||
const float sig = res.sig;
|
||||
const float fract = res.fract;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ frexp_result tint_frexp(float param_0) {
|
|||
void tint_symbol() {
|
||||
frexp_result res = tint_frexp(1.230000019f);
|
||||
int tint_symbol_1 = res.exp;
|
||||
float sig = res.sig;
|
||||
float tint_symbol_2 = res.fract;
|
||||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
|
|
|
@ -3,19 +3,19 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
kernel void tint_symbol() {
|
||||
frexp_result const res = tint_frexp(1.230000019f);
|
||||
int const exp = res.exp;
|
||||
float const sig = res.sig;
|
||||
float const fract = res.fract;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpName %main "main"
|
||||
OpName %__frexp_result "__frexp_result"
|
||||
OpMemberName %__frexp_result 0 "sig"
|
||||
OpMemberName %__frexp_result 0 "fract"
|
||||
OpMemberName %__frexp_result 1 "exp"
|
||||
OpMemberDecorate %__frexp_result 0 Offset 0
|
||||
OpMemberDecorate %__frexp_result 1 Offset 4
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
fn main() {
|
||||
let res = frexp(1.23);
|
||||
let exp : i32 = res.exp;
|
||||
let sig : f32 = res.sig;
|
||||
let fract : f32 = res.fract;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec4_f16 {
|
||||
vector<float16_t, 4> sig;
|
||||
vector<float16_t, 4> fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4_f16 tint_frexp(vector<float16_t, 4> param_0) {
|
||||
vector<float16_t, 4> exp;
|
||||
vector<float16_t, 4> sig = frexp(param_0, exp);
|
||||
frexp_result_vec4_f16 result = {sig, int4(exp)};
|
||||
vector<float16_t, 4> fract = frexp(param_0, exp);
|
||||
frexp_result_vec4_f16 result = {fract, int4(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
f16vec4 sig;
|
||||
f16vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4_f16 tint_frexp(f16vec4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -35,13 +35,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
f16vec4 sig;
|
||||
f16vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4_f16 tint_frexp(f16vec4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -62,13 +62,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
f16vec4 sig;
|
||||
f16vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4_f16 tint_frexp(f16vec4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
half4 sig;
|
||||
half4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4_f16 tint_frexp(half4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_3dd21e "frexp_3dd21e"
|
||||
OpName %__frexp_result_vec4_f16 "__frexp_result_vec4_f16"
|
||||
OpMemberName %__frexp_result_vec4_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_vec4_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_vec4_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -33,13 +33,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_4b2200 "frexp_4b2200"
|
||||
OpName %__frexp_result "__frexp_result"
|
||||
OpMemberName %__frexp_result 0 "sig"
|
||||
OpMemberName %__frexp_result 0 "fract"
|
||||
OpMemberName %__frexp_result 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
float16_t exp;
|
||||
float16_t sig = frexp(param_0, exp);
|
||||
frexp_result_f16 result = {sig, int(exp)};
|
||||
float16_t fract = frexp(param_0, exp);
|
||||
frexp_result_f16 result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -35,13 +35,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -62,13 +62,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_f16 {
|
||||
half sig;
|
||||
half fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result_f16 tint_frexp(half param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_5257dd "frexp_5257dd"
|
||||
OpName %__frexp_result_f16 "__frexp_result_f16"
|
||||
OpMemberName %__frexp_result_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec2_f16 {
|
||||
vector<float16_t, 2> sig;
|
||||
vector<float16_t, 2> fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2_f16 tint_frexp(vector<float16_t, 2> param_0) {
|
||||
vector<float16_t, 2> exp;
|
||||
vector<float16_t, 2> sig = frexp(param_0, exp);
|
||||
frexp_result_vec2_f16 result = {sig, int2(exp)};
|
||||
vector<float16_t, 2> fract = frexp(param_0, exp);
|
||||
frexp_result_vec2_f16 result = {fract, int2(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
f16vec2 sig;
|
||||
f16vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2_f16 tint_frexp(f16vec2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -35,13 +35,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
f16vec2 sig;
|
||||
f16vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2_f16 tint_frexp(f16vec2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -62,13 +62,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
f16vec2 sig;
|
||||
f16vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2_f16 tint_frexp(f16vec2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
half2 sig;
|
||||
half2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2_f16 tint_frexp(half2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_5f47bf "frexp_5f47bf"
|
||||
OpName %__frexp_result_vec2_f16 "__frexp_result_vec2_f16"
|
||||
OpMemberName %__frexp_result_vec2_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_vec2_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_vec2_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec4 {
|
||||
float4 sig;
|
||||
float4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4 tint_frexp(float4 param_0) {
|
||||
float4 exp;
|
||||
float4 sig = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {sig, int4(exp)};
|
||||
float4 fract = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {fract, int4(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec4 {
|
||||
float4 sig;
|
||||
float4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4 tint_frexp(float4 param_0) {
|
||||
float4 exp;
|
||||
float4 sig = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {sig, int4(exp)};
|
||||
float4 fract = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {fract, int4(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
vec4 sig;
|
||||
vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4 tint_frexp(vec4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -33,13 +33,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
vec4 sig;
|
||||
vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4 tint_frexp(vec4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
vec4 sig;
|
||||
vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4 tint_frexp(vec4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
float4 sig;
|
||||
float4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4 tint_frexp(float4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_77af93 "frexp_77af93"
|
||||
OpName %__frexp_result_vec4 "__frexp_result_vec4"
|
||||
OpMemberName %__frexp_result_vec4 0 "sig"
|
||||
OpMemberName %__frexp_result_vec4 0 "fract"
|
||||
OpMemberName %__frexp_result_vec4 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
float3 exp;
|
||||
float3 sig = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {sig, int3(exp)};
|
||||
float3 fract = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
float3 exp;
|
||||
float3 sig = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {sig, int3(exp)};
|
||||
float3 fract = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -33,13 +33,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_979800 "frexp_979800"
|
||||
OpName %__frexp_result_vec3 "__frexp_result_vec3"
|
||||
OpMemberName %__frexp_result_vec3 0 "sig"
|
||||
OpMemberName %__frexp_result_vec3 0 "fract"
|
||||
OpMemberName %__frexp_result_vec3 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec3_f16 {
|
||||
vector<float16_t, 3> sig;
|
||||
vector<float16_t, 3> fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3_f16 tint_frexp(vector<float16_t, 3> param_0) {
|
||||
vector<float16_t, 3> exp;
|
||||
vector<float16_t, 3> sig = frexp(param_0, exp);
|
||||
frexp_result_vec3_f16 result = {sig, int3(exp)};
|
||||
vector<float16_t, 3> fract = frexp(param_0, exp);
|
||||
frexp_result_vec3_f16 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -35,13 +35,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -62,13 +62,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
half3 sig;
|
||||
half3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3_f16 tint_frexp(half3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_ae4a66 "frexp_ae4a66"
|
||||
OpName %__frexp_result_vec3_f16 "__frexp_result_vec3_f16"
|
||||
OpMemberName %__frexp_result_vec3_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_vec3_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_vec3_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec2 {
|
||||
float2 sig;
|
||||
float2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2 tint_frexp(float2 param_0) {
|
||||
float2 exp;
|
||||
float2 sig = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {sig, int2(exp)};
|
||||
float2 fract = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {fract, int2(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec2 {
|
||||
float2 sig;
|
||||
float2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2 tint_frexp(float2 param_0) {
|
||||
float2 exp;
|
||||
float2 sig = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {sig, int2(exp)};
|
||||
float2 fract = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {fract, int2(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
vec2 sig;
|
||||
vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2 tint_frexp(vec2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -33,13 +33,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
vec2 sig;
|
||||
vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2 tint_frexp(vec2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -59,13 +59,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
vec2 sig;
|
||||
vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2 tint_frexp(vec2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
float2 sig;
|
||||
float2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2 tint_frexp(float2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
OpName %vertex_point_size "vertex_point_size"
|
||||
OpName %frexp_eb2421 "frexp_eb2421"
|
||||
OpName %__frexp_result_vec2 "__frexp_result_vec2"
|
||||
OpMemberName %__frexp_result_vec2 0 "sig"
|
||||
OpMemberName %__frexp_result_vec2 0 "fract"
|
||||
OpMemberName %__frexp_result_vec2 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec4_f16 {
|
||||
vector<float16_t, 4> sig;
|
||||
vector<float16_t, 4> fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4_f16 tint_frexp(vector<float16_t, 4> param_0) {
|
||||
vector<float16_t, 4> exp;
|
||||
vector<float16_t, 4> sig = frexp(param_0, exp);
|
||||
frexp_result_vec4_f16 result = {sig, int4(exp)};
|
||||
vector<float16_t, 4> fract = frexp(param_0, exp);
|
||||
frexp_result_vec4_f16 result = {fract, int4(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
f16vec4 sig;
|
||||
f16vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4_f16 tint_frexp(f16vec4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -36,13 +36,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
f16vec4 sig;
|
||||
f16vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4_f16 tint_frexp(f16vec4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -64,13 +64,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
f16vec4 sig;
|
||||
f16vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4_f16 tint_frexp(f16vec4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec4_f16 {
|
||||
half4 sig;
|
||||
half4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4_f16 tint_frexp(half4 param_0) {
|
||||
frexp_result_vec4_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
OpName %frexp_3dd21e "frexp_3dd21e"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result_vec4_f16 "__frexp_result_vec4_f16"
|
||||
OpMemberName %__frexp_result_vec4_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_vec4_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_vec4_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
float exp;
|
||||
float sig = frexp(param_0, exp);
|
||||
frexp_result result = {sig, int(exp)};
|
||||
float fract = frexp(param_0, exp);
|
||||
frexp_result result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -34,13 +34,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result {
|
||||
float sig;
|
||||
float fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result tint_frexp(float param_0) {
|
||||
frexp_result result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
OpName %frexp_4b2200 "frexp_4b2200"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result "__frexp_result"
|
||||
OpMemberName %__frexp_result 0 "sig"
|
||||
OpMemberName %__frexp_result 0 "fract"
|
||||
OpMemberName %__frexp_result 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
float16_t exp;
|
||||
float16_t sig = frexp(param_0, exp);
|
||||
frexp_result_f16 result = {sig, int(exp)};
|
||||
float16_t fract = frexp(param_0, exp);
|
||||
frexp_result_f16 result = {fract, int(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -36,13 +36,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -64,13 +64,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_f16 {
|
||||
float16_t sig;
|
||||
float16_t fract;
|
||||
int exp;
|
||||
};
|
||||
|
||||
frexp_result_f16 tint_frexp(float16_t param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_f16 {
|
||||
half sig;
|
||||
half fract;
|
||||
int exp;
|
||||
};
|
||||
frexp_result_f16 tint_frexp(half param_0) {
|
||||
frexp_result_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
OpName %frexp_5257dd "frexp_5257dd"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result_f16 "__frexp_result_f16"
|
||||
OpMemberName %__frexp_result_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec2_f16 {
|
||||
vector<float16_t, 2> sig;
|
||||
vector<float16_t, 2> fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2_f16 tint_frexp(vector<float16_t, 2> param_0) {
|
||||
vector<float16_t, 2> exp;
|
||||
vector<float16_t, 2> sig = frexp(param_0, exp);
|
||||
frexp_result_vec2_f16 result = {sig, int2(exp)};
|
||||
vector<float16_t, 2> fract = frexp(param_0, exp);
|
||||
frexp_result_vec2_f16 result = {fract, int2(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
f16vec2 sig;
|
||||
f16vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2_f16 tint_frexp(f16vec2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -36,13 +36,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
f16vec2 sig;
|
||||
f16vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2_f16 tint_frexp(f16vec2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -64,13 +64,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
f16vec2 sig;
|
||||
f16vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2_f16 tint_frexp(f16vec2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec2_f16 {
|
||||
half2 sig;
|
||||
half2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2_f16 tint_frexp(half2 param_0) {
|
||||
frexp_result_vec2_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
OpName %frexp_5f47bf "frexp_5f47bf"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result_vec2_f16 "__frexp_result_vec2_f16"
|
||||
OpMemberName %__frexp_result_vec2_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_vec2_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_vec2_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec4 {
|
||||
float4 sig;
|
||||
float4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4 tint_frexp(float4 param_0) {
|
||||
float4 exp;
|
||||
float4 sig = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {sig, int4(exp)};
|
||||
float4 fract = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {fract, int4(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec4 {
|
||||
float4 sig;
|
||||
float4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4 tint_frexp(float4 param_0) {
|
||||
float4 exp;
|
||||
float4 sig = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {sig, int4(exp)};
|
||||
float4 fract = frexp(param_0, exp);
|
||||
frexp_result_vec4 result = {fract, int4(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
vec4 sig;
|
||||
vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4 tint_frexp(vec4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -34,13 +34,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
vec4 sig;
|
||||
vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4 tint_frexp(vec4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
vec4 sig;
|
||||
vec4 fract;
|
||||
ivec4 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec4 tint_frexp(vec4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec4 {
|
||||
float4 sig;
|
||||
float4 fract;
|
||||
int4 exp;
|
||||
};
|
||||
frexp_result_vec4 tint_frexp(float4 param_0) {
|
||||
frexp_result_vec4 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
OpName %frexp_77af93 "frexp_77af93"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result_vec4 "__frexp_result_vec4"
|
||||
OpMemberName %__frexp_result_vec4 0 "sig"
|
||||
OpMemberName %__frexp_result_vec4 0 "fract"
|
||||
OpMemberName %__frexp_result_vec4 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
float3 exp;
|
||||
float3 sig = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {sig, int3(exp)};
|
||||
float3 fract = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
float3 exp;
|
||||
float3 sig = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {sig, int3(exp)};
|
||||
float3 fract = frexp(param_0, exp);
|
||||
frexp_result_vec3 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -34,13 +34,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
vec3 sig;
|
||||
vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3 tint_frexp(vec3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec3 {
|
||||
float3 sig;
|
||||
float3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3 tint_frexp(float3 param_0) {
|
||||
frexp_result_vec3 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
OpName %frexp_979800 "frexp_979800"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result_vec3 "__frexp_result_vec3"
|
||||
OpMemberName %__frexp_result_vec3 0 "sig"
|
||||
OpMemberName %__frexp_result_vec3 0 "fract"
|
||||
OpMemberName %__frexp_result_vec3 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec3_f16 {
|
||||
vector<float16_t, 3> sig;
|
||||
vector<float16_t, 3> fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3_f16 tint_frexp(vector<float16_t, 3> param_0) {
|
||||
vector<float16_t, 3> exp;
|
||||
vector<float16_t, 3> sig = frexp(param_0, exp);
|
||||
frexp_result_vec3_f16 result = {sig, int3(exp)};
|
||||
vector<float16_t, 3> fract = frexp(param_0, exp);
|
||||
frexp_result_vec3_f16 result = {fract, int3(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -36,13 +36,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -64,13 +64,13 @@ void main() {
|
|||
#extension GL_AMD_gpu_shader_half_float : require
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
f16vec3 sig;
|
||||
f16vec3 fract;
|
||||
ivec3 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec3_f16 tint_frexp(f16vec3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec3_f16 {
|
||||
half3 sig;
|
||||
half3 fract;
|
||||
int3 exp;
|
||||
};
|
||||
frexp_result_vec3_f16 tint_frexp(half3 param_0) {
|
||||
frexp_result_vec3_f16 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
OpName %frexp_ae4a66 "frexp_ae4a66"
|
||||
OpName %arg_0 "arg_0"
|
||||
OpName %__frexp_result_vec3_f16 "__frexp_result_vec3_f16"
|
||||
OpMemberName %__frexp_result_vec3_f16 0 "sig"
|
||||
OpMemberName %__frexp_result_vec3_f16 0 "fract"
|
||||
OpMemberName %__frexp_result_vec3_f16 1 "exp"
|
||||
OpName %res "res"
|
||||
OpName %vertex_main_inner "vertex_main_inner"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec2 {
|
||||
float2 sig;
|
||||
float2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2 tint_frexp(float2 param_0) {
|
||||
float2 exp;
|
||||
float2 sig = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {sig, int2(exp)};
|
||||
float2 fract = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {fract, int2(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
struct frexp_result_vec2 {
|
||||
float2 sig;
|
||||
float2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2 tint_frexp(float2 param_0) {
|
||||
float2 exp;
|
||||
float2 sig = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {sig, int2(exp)};
|
||||
float2 fract = frexp(param_0, exp);
|
||||
frexp_result_vec2 result = {fract, int2(exp)};
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
vec2 sig;
|
||||
vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2 tint_frexp(vec2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -34,13 +34,13 @@ void main() {
|
|||
precision mediump float;
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
vec2 sig;
|
||||
vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2 tint_frexp(vec2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ void main() {
|
|||
#version 310 es
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
vec2 sig;
|
||||
vec2 fract;
|
||||
ivec2 exp;
|
||||
};
|
||||
|
||||
frexp_result_vec2 tint_frexp(vec2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
using namespace metal;
|
||||
|
||||
struct frexp_result_vec2 {
|
||||
float2 sig;
|
||||
float2 fract;
|
||||
int2 exp;
|
||||
};
|
||||
frexp_result_vec2 tint_frexp(float2 param_0) {
|
||||
frexp_result_vec2 result;
|
||||
result.sig = frexp(param_0, result.exp);
|
||||
result.fract = frexp(param_0, result.exp);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue