diff --git a/src/tint/transform/builtin_polyfill.cc b/src/tint/transform/builtin_polyfill.cc index e53dad75a3..8c8985fbb2 100644 --- a/src/tint/transform/builtin_polyfill.cc +++ b/src/tint/transform/builtin_polyfill.cc @@ -569,6 +569,9 @@ bool BuiltinPolyfill::ShouldRun(const Program* program, const DataMap& data) con for (auto* node : program->ASTNodes().Objects()) { if (auto* call = sem.Get(node)) { if (auto* builtin = call->Target()->As()) { + if (call->Stage() == sem::EvaluationStage::kConstant) { + continue; // Don't polyfill @const expressions + } switch (builtin->Type()) { case sem::BuiltinType::kAcosh: if (builtins.acosh != Level::kNone) { @@ -653,6 +656,9 @@ void BuiltinPolyfill::Run(CloneContext& ctx, const DataMap& data, DataMap&) cons State s{ctx, builtins}; if (auto* call = s.sem.Get(expr)) { if (auto* builtin = call->Target()->As()) { + if (call->Stage() == sem::EvaluationStage::kConstant) { + return nullptr; // Don't polyfill @const expressions + } Symbol polyfill; switch (builtin->Type()) { case sem::BuiltinType::kAcosh: diff --git a/src/tint/transform/builtin_polyfill_test.cc b/src/tint/transform/builtin_polyfill_test.cc index dc76eb01ba..2a62910fe9 100644 --- a/src/tint/transform/builtin_polyfill_test.cc +++ b/src/tint/transform/builtin_polyfill_test.cc @@ -55,20 +55,37 @@ DataMap polyfillAcosh(Level level) { TEST_F(BuiltinPolyfillTest, ShouldRunAcosh) { auto* src = R"( fn f() { - acosh(1.0); + let v = 1.0; + acosh(v); } )"; EXPECT_FALSE(ShouldRun(src)); EXPECT_FALSE(ShouldRun(src, polyfillAcosh(Level::kNone))); - EXPECT_TRUE(ShouldRun(src, polyfillAcosh(Level::kClampParameters))); + EXPECT_TRUE(ShouldRun(src, polyfillAcosh(Level::kRangeCheck))); EXPECT_TRUE(ShouldRun(src, polyfillAcosh(Level::kFull))); } +// TODO(crbug.com/tint/1581): Enable once `acosh` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_Acosh_ConstantExpression) { + auto* src = R"( +fn f() { + let r : f32 = acosh(1.0); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillAcosh(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, Acosh_Full_f32) { auto* src = R"( fn f() { - let r : f32 = acosh(1234); + let v = 1.0; + let r : f32 = acosh(v); } )"; @@ -78,7 +95,8 @@ fn tint_acosh(x : f32) -> f32 { } fn f() { - let r : f32 = tint_acosh(1234); + let v = 1.0; + let r : f32 = tint_acosh(v); } )"; @@ -90,7 +108,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Acosh_Full_vec3_f32) { auto* src = R"( fn f() { - let r : vec3 = acosh(vec3(1234)); + let v = 1.0; + let r : vec3 = acosh(vec3(v)); } )"; @@ -100,7 +119,8 @@ fn tint_acosh(x : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_acosh(vec3(1234)); + let v = 1.0; + let r : vec3 = tint_acosh(vec3(v)); } )"; @@ -112,7 +132,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Acosh_Range_f32) { auto* src = R"( fn f() { - let r : f32 = acosh(1234); + let v = 1.0; + let r : f32 = acosh(v); } )"; @@ -122,7 +143,8 @@ fn tint_acosh(x : f32) -> f32 { } fn f() { - let r : f32 = tint_acosh(1234); + let v = 1.0; + let r : f32 = tint_acosh(v); } )"; @@ -134,7 +156,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Acosh_Range_vec3_f32) { auto* src = R"( fn f() { - let r : vec3 = acosh(vec3(1234)); + let v = 1.0; + let r : vec3 = acosh(vec3(v)); } )"; @@ -144,7 +167,8 @@ fn tint_acosh(x : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_acosh(vec3(1234)); + let v = 1.0; + let r : vec3 = tint_acosh(vec3(v)); } )"; @@ -167,7 +191,8 @@ DataMap polyfillSinh() { TEST_F(BuiltinPolyfillTest, ShouldRunAsinh) { auto* src = R"( fn f() { - asinh(1.0f); + let v = 1.0; + asinh(v); } )"; @@ -175,10 +200,25 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillSinh())); } +TEST_F(BuiltinPolyfillTest, Asinh_ConstantExpression) { + auto* src = R"( +fn f() { + let r : f32 = asinh(1.0); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillSinh()); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, Asinh_f32) { auto* src = R"( fn f() { - let r : f32 = asinh(1234f); + let v = 1.0; + let r : f32 = asinh(v); } )"; @@ -188,7 +228,8 @@ fn tint_sinh(x : f32) -> f32 { } fn f() { - let r : f32 = tint_sinh(1234.0f); + let v = 1.0; + let r : f32 = tint_sinh(v); } )"; @@ -200,7 +241,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Asinh_vec3_f32) { auto* src = R"( fn f() { - let r : vec3 = asinh(vec3(1234f)); + let v = 1.0; + let r : vec3 = asinh(vec3(v)); } )"; @@ -210,7 +252,8 @@ fn tint_sinh(x : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_sinh(vec3(1234.0f)); + let v = 1.0; + let r : vec3 = tint_sinh(vec3(v)); } )"; @@ -233,20 +276,37 @@ DataMap polyfillAtanh(Level level) { TEST_F(BuiltinPolyfillTest, ShouldRunAtanh) { auto* src = R"( fn f() { - atanh(0.9f); + let v = 1.0; + atanh(v); } )"; EXPECT_FALSE(ShouldRun(src)); EXPECT_FALSE(ShouldRun(src, polyfillAtanh(Level::kNone))); - EXPECT_TRUE(ShouldRun(src, polyfillAtanh(Level::kClampParameters))); + EXPECT_TRUE(ShouldRun(src, polyfillAtanh(Level::kRangeCheck))); EXPECT_TRUE(ShouldRun(src, polyfillAtanh(Level::kFull))); } +// TODO(crbug.com/tint/1581): Enable once `atanh` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_Atanh_ConstantExpression) { + auto* src = R"( +fn f() { + let r : f32 = atanh(1.23); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillAtanh(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, Atanh_Full_f32) { auto* src = R"( fn f() { - let r : f32 = atanh(0f); + let v = 1.0; + let r : f32 = atanh(v); } )"; @@ -256,7 +316,8 @@ fn tint_atanh(x : f32) -> f32 { } fn f() { - let r : f32 = tint_atanh(0.0f); + let v = 1.0; + let r : f32 = tint_atanh(v); } )"; @@ -268,7 +329,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Atanh_Full_vec3_f32) { auto* src = R"( fn f() { - let r : vec3 = atanh(vec3(0f)); + let v = 1.0; + let r : vec3 = atanh(vec3(v)); } )"; @@ -278,7 +340,8 @@ fn tint_atanh(x : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_atanh(vec3(0.0f)); + let v = 1.0; + let r : vec3 = tint_atanh(vec3(v)); } )"; @@ -290,7 +353,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Atanh_Range_f32) { auto* src = R"( fn f() { - let r : f32 = atanh(0f); + let v = 1.0; + let r : f32 = atanh(v); } )"; @@ -300,7 +364,8 @@ fn tint_atanh(x : f32) -> f32 { } fn f() { - let r : f32 = tint_atanh(0.0f); + let v = 1.0; + let r : f32 = tint_atanh(v); } )"; @@ -312,7 +377,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Atanh_Range_vec3_f32) { auto* src = R"( fn f() { - let r : vec3 = atanh(vec3(0f)); + let v = 1.0; + let r : vec3 = atanh(vec3(v)); } )"; @@ -322,7 +388,8 @@ fn tint_atanh(x : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_atanh(vec3(0.0f)); + let v = 1.0; + let r : vec3 = tint_atanh(vec3(v)); } )"; @@ -345,7 +412,8 @@ DataMap polyfillCountLeadingZeros() { TEST_F(BuiltinPolyfillTest, ShouldRunCountLeadingZeros) { auto* src = R"( fn f() { - countLeadingZeros(0xf); + let v = 15; + countLeadingZeros(v); } )"; @@ -353,10 +421,26 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillCountLeadingZeros())); } +// TODO(crbug.com/tint/1581): Enable once `countLeadingZeros` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_CountLeadingZeros_ConstantExpression) { + auto* src = R"( +fn f() { + let r : i32 = countLeadingZeros(15i); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillCountLeadingZeros()); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, CountLeadingZeros_i32) { auto* src = R"( fn f() { - let r : i32 = countLeadingZeros(15); + let v = 15i; + let r : i32 = countLeadingZeros(v); } )"; @@ -377,7 +461,8 @@ fn tint_count_leading_zeros(v : i32) -> i32 { } fn f() { - let r : i32 = tint_count_leading_zeros(15); + let v = 15i; + let r : i32 = tint_count_leading_zeros(v); } )"; @@ -389,7 +474,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, CountLeadingZeros_u32) { auto* src = R"( fn f() { - let r : u32 = countLeadingZeros(15u); + let v = 15u; + let r : u32 = countLeadingZeros(v); } )"; @@ -410,7 +496,8 @@ fn tint_count_leading_zeros(v : u32) -> u32 { } fn f() { - let r : u32 = tint_count_leading_zeros(15u); + let v = 15u; + let r : u32 = tint_count_leading_zeros(v); } )"; @@ -422,7 +509,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, CountLeadingZeros_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = countLeadingZeros(vec3(15)); + let v = 15i; + let r : vec3 = countLeadingZeros(vec3(v)); } )"; @@ -443,7 +531,8 @@ fn tint_count_leading_zeros(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_count_leading_zeros(vec3(15)); + let v = 15i; + let r : vec3 = tint_count_leading_zeros(vec3(v)); } )"; @@ -455,7 +544,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, CountLeadingZeros_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = countLeadingZeros(vec3(15u)); + let v = 15u; + let r : vec3 = countLeadingZeros(vec3(v)); } )"; @@ -476,7 +566,8 @@ fn tint_count_leading_zeros(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_count_leading_zeros(vec3(15u)); + let v = 15u; + let r : vec3 = tint_count_leading_zeros(vec3(v)); } )"; @@ -499,7 +590,8 @@ DataMap polyfillCountTrailingZeros() { TEST_F(BuiltinPolyfillTest, ShouldRunCountTrailingZeros) { auto* src = R"( fn f() { - countTrailingZeros(0xf); + let v = 15; + countTrailingZeros(v); } )"; @@ -507,10 +599,26 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillCountTrailingZeros())); } +// TODO(crbug.com/tint/1581): Enable once `countTrailingZeros` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_CountTrailingZeros_ConstantExpression) { + auto* src = R"( +fn f() { + let r : i32 = countTrailingZeros(15i); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillCountTrailingZeros()); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, CountTrailingZeros_i32) { auto* src = R"( fn f() { - let r : i32 = countTrailingZeros(15); + let v = 15i; + let r : i32 = countTrailingZeros(v); } )"; @@ -531,7 +639,8 @@ fn tint_count_trailing_zeros(v : i32) -> i32 { } fn f() { - let r : i32 = tint_count_trailing_zeros(15); + let v = 15i; + let r : i32 = tint_count_trailing_zeros(v); } )"; @@ -543,7 +652,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, CountTrailingZeros_u32) { auto* src = R"( fn f() { - let r : u32 = countTrailingZeros(15u); + let v = 15u; + let r : u32 = countTrailingZeros(v); } )"; @@ -564,7 +674,8 @@ fn tint_count_trailing_zeros(v : u32) -> u32 { } fn f() { - let r : u32 = tint_count_trailing_zeros(15u); + let v = 15u; + let r : u32 = tint_count_trailing_zeros(v); } )"; @@ -576,7 +687,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, CountTrailingZeros_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = countTrailingZeros(vec3(15)); + let v = 15i; + let r : vec3 = countTrailingZeros(vec3(v)); } )"; @@ -597,7 +709,8 @@ fn tint_count_trailing_zeros(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_count_trailing_zeros(vec3(15)); + let v = 15i; + let r : vec3 = tint_count_trailing_zeros(vec3(v)); } )"; @@ -609,7 +722,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, CountTrailingZeros_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = countTrailingZeros(vec3(15u)); + let v = 15u; + let r : vec3 = countTrailingZeros(vec3(v)); } )"; @@ -630,7 +744,8 @@ fn tint_count_trailing_zeros(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_count_trailing_zeros(vec3(15u)); + let v = 15u; + let r : vec3 = tint_count_trailing_zeros(vec3(v)); } )"; @@ -653,7 +768,8 @@ DataMap polyfillExtractBits(Level level) { TEST_F(BuiltinPolyfillTest, ShouldRunExtractBits) { auto* src = R"( fn f() { - extractBits(1234, 5u, 6u); + let v = 1234i; + extractBits(v, 5u, 6u); } )"; @@ -663,10 +779,25 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillExtractBits(Level::kFull))); } +TEST_F(BuiltinPolyfillTest, ExtractBits_ConstantExpression) { + auto* src = R"( +fn f() { + let r : i32 = countTrailingZeros(15i); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillExtractBits(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, ExtractBits_Full_i32) { auto* src = R"( fn f() { - let r : i32 = extractBits(1234, 5u, 6u); + let v = 1234i; + let r : i32 = extractBits(v, 5u, 6u); } )"; @@ -680,7 +811,8 @@ fn tint_extract_bits(v : i32, offset : u32, count : u32) -> i32 { } fn f() { - let r : i32 = tint_extract_bits(1234, 5u, 6u); + let v = 1234i; + let r : i32 = tint_extract_bits(v, 5u, 6u); } )"; @@ -692,7 +824,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Full_u32) { auto* src = R"( fn f() { - let r : u32 = extractBits(1234u, 5u, 6u); + let v = 1234u; + let r : u32 = extractBits(v, 5u, 6u); } )"; @@ -706,7 +839,8 @@ fn tint_extract_bits(v : u32, offset : u32, count : u32) -> u32 { } fn f() { - let r : u32 = tint_extract_bits(1234u, 5u, 6u); + let v = 1234u; + let r : u32 = tint_extract_bits(v, 5u, 6u); } )"; @@ -718,7 +852,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Full_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = extractBits(vec3(1234), 5u, 6u); + let v = 1234i; + let r : vec3 = extractBits(vec3(v), 5u, 6u); } )"; @@ -732,7 +867,8 @@ fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { } fn f() { - let r : vec3 = tint_extract_bits(vec3(1234), 5u, 6u); + let v = 1234i; + let r : vec3 = tint_extract_bits(vec3(v), 5u, 6u); } )"; @@ -744,7 +880,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Full_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = extractBits(vec3(1234u), 5u, 6u); + let v = 1234u; + let r : vec3 = extractBits(vec3(v), 5u, 6u); } )"; @@ -758,7 +895,8 @@ fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { } fn f() { - let r : vec3 = tint_extract_bits(vec3(1234u), 5u, 6u); + let v = 1234u; + let r : vec3 = tint_extract_bits(vec3(v), 5u, 6u); } )"; @@ -770,7 +908,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_i32) { auto* src = R"( fn f() { - let r : i32 = extractBits(1234, 5u, 6u); + let v = 1234i; + let r : i32 = extractBits(v, 5u, 6u); } )"; @@ -782,7 +921,8 @@ fn tint_extract_bits(v : i32, offset : u32, count : u32) -> i32 { } fn f() { - let r : i32 = tint_extract_bits(1234, 5u, 6u); + let v = 1234i; + let r : i32 = tint_extract_bits(v, 5u, 6u); } )"; @@ -794,7 +934,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_u32) { auto* src = R"( fn f() { - let r : u32 = extractBits(1234u, 5u, 6u); + let v = 1234u; + let r : u32 = extractBits(v, 5u, 6u); } )"; @@ -806,7 +947,8 @@ fn tint_extract_bits(v : u32, offset : u32, count : u32) -> u32 { } fn f() { - let r : u32 = tint_extract_bits(1234u, 5u, 6u); + let v = 1234u; + let r : u32 = tint_extract_bits(v, 5u, 6u); } )"; @@ -818,7 +960,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = extractBits(vec3(1234), 5u, 6u); + let v = 1234i; + let r : vec3 = extractBits(vec3(v), 5u, 6u); } )"; @@ -830,7 +973,8 @@ fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { } fn f() { - let r : vec3 = tint_extract_bits(vec3(1234), 5u, 6u); + let v = 1234i; + let r : vec3 = tint_extract_bits(vec3(v), 5u, 6u); } )"; @@ -842,7 +986,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, ExtractBits_Clamp_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = extractBits(vec3(1234u), 5u, 6u); + let v = 1234u; + let r : vec3 = extractBits(vec3(v), 5u, 6u); } )"; @@ -854,7 +999,8 @@ fn tint_extract_bits(v : vec3, offset : u32, count : u32) -> vec3 { } fn f() { - let r : vec3 = tint_extract_bits(vec3(1234u), 5u, 6u); + let v = 1234u; + let r : vec3 = tint_extract_bits(vec3(v), 5u, 6u); } )"; @@ -877,7 +1023,8 @@ DataMap polyfillFirstLeadingBit() { TEST_F(BuiltinPolyfillTest, ShouldRunFirstLeadingBit) { auto* src = R"( fn f() { - firstLeadingBit(0xf); + let v = 15i; + firstLeadingBit(v); } )"; @@ -885,10 +1032,26 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillFirstLeadingBit())); } +// TODO(crbug.com/tint/1581): Enable once `firstLeadingBit` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_FirstLeadingBit_ConstantExpression) { + auto* src = R"( +fn f() { + let r : i32 = firstLeadingBit(15i); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillFirstLeadingBit()); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, FirstLeadingBit_i32) { auto* src = R"( fn f() { - let r : i32 = firstLeadingBit(15); + let v = 15i; + let r : i32 = firstLeadingBit(v); } )"; @@ -909,7 +1072,8 @@ fn tint_first_leading_bit(v : i32) -> i32 { } fn f() { - let r : i32 = tint_first_leading_bit(15); + let v = 15i; + let r : i32 = tint_first_leading_bit(v); } )"; @@ -921,7 +1085,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, FirstLeadingBit_u32) { auto* src = R"( fn f() { - let r : u32 = firstLeadingBit(15u); + let v = 15u; + let r : u32 = firstLeadingBit(v); } )"; @@ -942,7 +1107,8 @@ fn tint_first_leading_bit(v : u32) -> u32 { } fn f() { - let r : u32 = tint_first_leading_bit(15u); + let v = 15u; + let r : u32 = tint_first_leading_bit(v); } )"; @@ -954,7 +1120,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, FirstLeadingBit_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = firstLeadingBit(vec3(15)); + let v = 15i; + let r : vec3 = firstLeadingBit(vec3(v)); } )"; @@ -975,7 +1142,8 @@ fn tint_first_leading_bit(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_first_leading_bit(vec3(15)); + let v = 15i; + let r : vec3 = tint_first_leading_bit(vec3(v)); } )"; @@ -987,7 +1155,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, FirstLeadingBit_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = firstLeadingBit(vec3(15u)); + let v = 15u; + let r : vec3 = firstLeadingBit(vec3(v)); } )"; @@ -1008,7 +1177,8 @@ fn tint_first_leading_bit(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_first_leading_bit(vec3(15u)); + let v = 15u; + let r : vec3 = tint_first_leading_bit(vec3(v)); } )"; @@ -1031,7 +1201,8 @@ DataMap polyfillFirstTrailingBit() { TEST_F(BuiltinPolyfillTest, ShouldRunFirstTrailingBit) { auto* src = R"( fn f() { - firstTrailingBit(0xf); + let v = 15i; + firstTrailingBit(v); } )"; @@ -1039,10 +1210,26 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillFirstTrailingBit())); } +// TODO(crbug.com/tint/1581): Enable once `firstTrailingBit` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_FirstTrailingBit_ConstantExpression) { + auto* src = R"( +fn f() { + let r : i32 = firstTrailingBit(15i); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillFirstTrailingBit()); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, FirstTrailingBit_i32) { auto* src = R"( fn f() { - let r : i32 = firstTrailingBit(15); + let v = 15i; + let r : i32 = firstTrailingBit(v); } )"; @@ -1063,7 +1250,8 @@ fn tint_first_trailing_bit(v : i32) -> i32 { } fn f() { - let r : i32 = tint_first_trailing_bit(15); + let v = 15i; + let r : i32 = tint_first_trailing_bit(v); } )"; @@ -1075,7 +1263,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, FirstTrailingBit_u32) { auto* src = R"( fn f() { - let r : u32 = firstTrailingBit(15u); + let v = 15u; + let r : u32 = firstTrailingBit(v); } )"; @@ -1096,7 +1285,8 @@ fn tint_first_trailing_bit(v : u32) -> u32 { } fn f() { - let r : u32 = tint_first_trailing_bit(15u); + let v = 15u; + let r : u32 = tint_first_trailing_bit(v); } )"; @@ -1108,7 +1298,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, FirstTrailingBit_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = firstTrailingBit(vec3(15)); + let v = 15i; + let r : vec3 = firstTrailingBit(vec3(v)); } )"; @@ -1129,7 +1320,8 @@ fn tint_first_trailing_bit(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_first_trailing_bit(vec3(15)); + let v = 15i; + let r : vec3 = tint_first_trailing_bit(vec3(v)); } )"; @@ -1141,7 +1333,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, FirstTrailingBit_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = firstTrailingBit(vec3(15u)); + let v = 15u; + let r : vec3 = firstTrailingBit(vec3(v)); } )"; @@ -1162,7 +1355,8 @@ fn tint_first_trailing_bit(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_first_trailing_bit(vec3(15u)); + let v = 15u; + let r : vec3 = tint_first_trailing_bit(vec3(v)); } )"; @@ -1185,7 +1379,8 @@ DataMap polyfillInsertBits(Level level) { TEST_F(BuiltinPolyfillTest, ShouldRunInsertBits) { auto* src = R"( fn f() { - insertBits(1234, 5678, 5u, 6u); + let v = 1234i; + insertBits(v, 5678, 5u, 6u); } )"; @@ -1195,11 +1390,27 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillInsertBits(Level::kFull))); } -TEST_F(BuiltinPolyfillTest, InsertBits_Full_i32) { +// TODO(crbug.com/tint/1581): Enable once `insertBits` is implemented as @const +TEST_F(BuiltinPolyfillTest, DISABLED_InsertBits_ConstantExpression) { auto* src = R"( fn f() { let r : i32 = insertBits(1234, 5678, 5u, 6u); } +)"; + + auto* expect = src; + + auto got = Run(src, polyfillInsertBits(Level::kFull)); + + EXPECT_EQ(expect, str(got)); +} + +TEST_F(BuiltinPolyfillTest, InsertBits_Full_i32) { + auto* src = R"( +fn f() { + let v = 1234i; + let r : i32 = insertBits(v, 5678, 5u, 6u); +} )"; auto* expect = R"( @@ -1211,7 +1422,8 @@ fn tint_insert_bits(v : i32, n : i32, offset : u32, count : u32) -> i32 { } fn f() { - let r : i32 = tint_insert_bits(1234, 5678, 5u, 6u); + let v = 1234i; + let r : i32 = tint_insert_bits(v, 5678, 5u, 6u); } )"; @@ -1223,7 +1435,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Full_u32) { auto* src = R"( fn f() { - let r : u32 = insertBits(1234u, 5678u, 5u, 6u); + let v = 1234u; + let r : u32 = insertBits(v, 5678u, 5u, 6u); } )"; @@ -1236,7 +1449,8 @@ fn tint_insert_bits(v : u32, n : u32, offset : u32, count : u32) -> u32 { } fn f() { - let r : u32 = tint_insert_bits(1234u, 5678u, 5u, 6u); + let v = 1234u; + let r : u32 = tint_insert_bits(v, 5678u, 5u, 6u); } )"; @@ -1248,7 +1462,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Full_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = insertBits(vec3(1234), vec3(5678), 5u, 6u); + let v = 1234i; + let r : vec3 = insertBits(vec3(v), vec3(5678), 5u, 6u); } )"; @@ -1261,7 +1476,8 @@ fn tint_insert_bits(v : vec3, n : vec3, offset : u32, count : u32) -> } fn f() { - let r : vec3 = tint_insert_bits(vec3(1234), vec3(5678), 5u, 6u); + let v = 1234i; + let r : vec3 = tint_insert_bits(vec3(v), vec3(5678), 5u, 6u); } )"; @@ -1273,7 +1489,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Full_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = insertBits(vec3(1234u), vec3(5678u), 5u, 6u); + let v = 1234u; + let r : vec3 = insertBits(vec3(v), vec3(5678u), 5u, 6u); } )"; @@ -1286,7 +1503,8 @@ fn tint_insert_bits(v : vec3, n : vec3, offset : u32, count : u32) -> } fn f() { - let r : vec3 = tint_insert_bits(vec3(1234u), vec3(5678u), 5u, 6u); + let v = 1234u; + let r : vec3 = tint_insert_bits(vec3(v), vec3(5678u), 5u, 6u); } )"; @@ -1298,7 +1516,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Clamp_i32) { auto* src = R"( fn f() { - let r : i32 = insertBits(1234, 5678, 5u, 6u); + let v = 1234i; + let r : i32 = insertBits(v, 5678, 5u, 6u); } )"; @@ -1310,7 +1529,8 @@ fn tint_insert_bits(v : i32, n : i32, offset : u32, count : u32) -> i32 { } fn f() { - let r : i32 = tint_insert_bits(1234, 5678, 5u, 6u); + let v = 1234i; + let r : i32 = tint_insert_bits(v, 5678, 5u, 6u); } )"; @@ -1322,7 +1542,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Clamp_u32) { auto* src = R"( fn f() { - let r : u32 = insertBits(1234u, 5678u, 5u, 6u); + let v = 1234u; + let r : u32 = insertBits(v, 5678u, 5u, 6u); } )"; @@ -1334,7 +1555,8 @@ fn tint_insert_bits(v : u32, n : u32, offset : u32, count : u32) -> u32 { } fn f() { - let r : u32 = tint_insert_bits(1234u, 5678u, 5u, 6u); + let v = 1234u; + let r : u32 = tint_insert_bits(v, 5678u, 5u, 6u); } )"; @@ -1346,7 +1568,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Clamp_vec3_i32) { auto* src = R"( fn f() { - let r : vec3 = insertBits(vec3(1234), vec3(5678), 5u, 6u); + let v = 1234i; + let r : vec3 = insertBits(vec3(v), vec3(5678), 5u, 6u); } )"; @@ -1358,7 +1581,8 @@ fn tint_insert_bits(v : vec3, n : vec3, offset : u32, count : u32) -> } fn f() { - let r : vec3 = tint_insert_bits(vec3(1234), vec3(5678), 5u, 6u); + let v = 1234i; + let r : vec3 = tint_insert_bits(vec3(v), vec3(5678), 5u, 6u); } )"; @@ -1370,7 +1594,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, InsertBits_Clamp_vec3_u32) { auto* src = R"( fn f() { - let r : vec3 = insertBits(vec3(1234u), vec3(5678u), 5u, 6u); + let v = 1234u; + let r : vec3 = insertBits(vec3(v), vec3(5678u), 5u, 6u); } )"; @@ -1382,7 +1607,8 @@ fn tint_insert_bits(v : vec3, n : vec3, offset : u32, count : u32) -> } fn f() { - let r : vec3 = tint_insert_bits(vec3(1234u), vec3(5678u), 5u, 6u); + let v = 1234u; + let r : vec3 = tint_insert_bits(vec3(v), vec3(5678u), 5u, 6u); } )"; @@ -1405,7 +1631,8 @@ DataMap polyfillSaturate() { TEST_F(BuiltinPolyfillTest, ShouldRunSaturate) { auto* src = R"( fn f() { - saturate(0.5); + let v = 0.5f; + saturate(v); } )"; @@ -1413,10 +1640,25 @@ fn f() { EXPECT_TRUE(ShouldRun(src, polyfillSaturate())); } +TEST_F(BuiltinPolyfillTest, Saturate_ConstantExpression) { + auto* src = R"( +fn f() { + let r : f32 = saturate(0.5); +} +)"; + + auto* expect = src; + + auto got = Run(src, polyfillSaturate()); + + EXPECT_EQ(expect, str(got)); +} + TEST_F(BuiltinPolyfillTest, Saturate_f32) { auto* src = R"( fn f() { - let r : f32 = saturate(0.5f); + let v = 0.5f; + let r : f32 = saturate(v); } )"; @@ -1426,7 +1668,8 @@ fn tint_saturate(v : f32) -> f32 { } fn f() { - let r : f32 = tint_saturate(0.5f); + let v = 0.5f; + let r : f32 = tint_saturate(v); } )"; @@ -1440,7 +1683,8 @@ TEST_F(BuiltinPolyfillTest, Saturate_f16) { enable f16; fn f() { - let r : f16 = saturate(0.5h); + let v = 0.5h; + let r : f16 = saturate(v); } )"; @@ -1452,7 +1696,8 @@ fn tint_saturate(v : f16) -> f16 { } fn f() { - let r : f16 = tint_saturate(0.5h); + let v = 0.5h; + let r : f16 = tint_saturate(v); } )"; @@ -1464,7 +1709,8 @@ fn f() { TEST_F(BuiltinPolyfillTest, Saturate_vec3_f32) { auto* src = R"( fn f() { - let r : vec3 = saturate(vec3(0.5f)); + let v = 0.5f; + let r : vec3 = saturate(vec3(v)); } )"; @@ -1474,7 +1720,8 @@ fn tint_saturate(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_saturate(vec3(0.5f)); + let v = 0.5f; + let r : vec3 = tint_saturate(vec3(v)); } )"; @@ -1488,7 +1735,8 @@ TEST_F(BuiltinPolyfillTest, Saturate_vec3_f16) { enable f16; fn f() { - let r : vec3 = saturate(vec3(0.5h)); + let v = 0.5h; + let r : vec3 = saturate(vec3(v)); } )"; @@ -1500,7 +1748,8 @@ fn tint_saturate(v : vec3) -> vec3 { } fn f() { - let r : vec3 = tint_saturate(vec3(0.5h)); + let v = 0.5h; + let r : vec3 = tint_saturate(vec3(v)); } )"; diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl index 597974753f..ea3d30bfc8 100644 --- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float tint_sinh(float x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_157447() { - float res = tint_sinh(1.0f); + float res = 0.881373584f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl index 597974753f..ea3d30bfc8 100644 --- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float tint_sinh(float x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_157447() { - float res = tint_sinh(1.0f); + float res = 0.881373584f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl index e5eaaee309..42281c96b7 100644 --- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float3 tint_sinh(float3 x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_2265ee() { - float3 res = tint_sinh((1.0f).xxx); + float3 res = (0.881373584f).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl index e5eaaee309..42281c96b7 100644 --- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float3 tint_sinh(float3 x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_2265ee() { - float3 res = tint_sinh((1.0f).xxx); + float3 res = (0.881373584f).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl index 70800417b4..895988b068 100644 --- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float16_t tint_sinh(float16_t x) { - return log((x + sqrt(((x * x) + float16_t(1.0h))))); -} - void asinh_468a48() { - float16_t res = tint_sinh(float16_t(0.0h)); + float16_t res = float16_t(0.0h); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl index 09e6588add..bd77bf3b1e 100644 --- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float2 tint_sinh(float2 x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_4a2226() { - float2 res = tint_sinh((1.0f).xx); + float2 res = (0.881373584f).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl index 09e6588add..bd77bf3b1e 100644 --- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float2 tint_sinh(float2 x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_4a2226() { - float2 res = tint_sinh((1.0f).xx); + float2 res = (0.881373584f).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl index b7a3794fa5..38dbc992b6 100644 --- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float4 tint_sinh(float4 x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_8d2e51() { - float4 res = tint_sinh((1.0f).xxxx); + float4 res = (0.881373584f).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl index b7a3794fa5..38dbc992b6 100644 --- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float4 tint_sinh(float4 x) { - return log((x + sqrt(((x * x) + 1.0f)))); -} - void asinh_8d2e51() { - float4 res = tint_sinh((1.0f).xxxx); + float4 res = (0.881373584f).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl index 05818ab377..a429606b4f 100644 --- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -vector tint_sinh(vector x) { - return log((x + sqrt(((x * x) + float16_t(1.0h))))); -} - void asinh_95ab2b() { - vector res = tint_sinh((float16_t(0.0h)).xxxx); + vector res = (float16_t(0.0h)).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl index 3a87d2d7e4..fa23693f75 100644 --- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -vector tint_sinh(vector x) { - return log((x + sqrt(((x * x) + float16_t(1.0h))))); -} - void asinh_ad8f8b() { - vector res = tint_sinh((float16_t(0.0h)).xx); + vector res = (float16_t(0.0h)).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl index 920c90e861..30cea256ce 100644 --- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -vector tint_sinh(vector x) { - return log((x + sqrt(((x * x) + float16_t(1.0h))))); -} - void asinh_fb5e8c() { - vector res = tint_sinh((float16_t(0.0h)).xxx); + vector res = (float16_t(0.0h)).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl index 9359293cb4..2aacc1c27a 100644 --- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float3 tint_atanh(float3 x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_440cca() { - float3 res = tint_atanh((0.5f).xxx); + float3 res = (0.549306154f).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl index 9359293cb4..2aacc1c27a 100644 --- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float3 tint_atanh(float3 x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_440cca() { - float3 res = tint_atanh((0.5f).xxx); + float3 res = (0.549306154f).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl index ec207ee146..babebf4c11 100644 --- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -vec3 tint_atanh(vec3 x) { - return mix(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f))); -} - void atanh_440cca() { - vec3 res = tint_atanh(vec3(0.5f)); + vec3 res = vec3(0.549306154f); } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -vec3 tint_atanh(vec3 x) { - return mix(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f))); -} - void atanh_440cca() { - vec3 res = tint_atanh(vec3(0.5f)); + vec3 res = vec3(0.549306154f); } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -vec3 tint_atanh(vec3 x) { - return mix(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f))); -} - void atanh_440cca() { - vec3 res = tint_atanh(vec3(0.5f)); + vec3 res = vec3(0.549306154f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl index 929e1776d0..203e734629 100644 --- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -float3 tint_atanh(float3 x) { - return select(atanh(x), float3(0.0f), (x >= float3(1.0f))); -} - void atanh_440cca() { - float3 res = tint_atanh(float3(0.5f)); + float3 res = float3(0.549306154f); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.spvasm index a0b1acccd0..540ebee576 100644 --- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 45 +; Bound: 33 ; Schema: 0 OpCapability Shader - %22 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_440cca "atanh_440cca" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,53 +28,40 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %v3float = OpTypeVector %float 3 - %9 = OpTypeFunction %v3float %v3float - %float_1 = OpConstant %float 1 - %16 = OpConstantComposite %v3float %float_1 %float_1 %float_1 - %bool = OpTypeBool - %v3bool = OpTypeVector %bool 3 - %20 = OpConstantNull %v3float %void = OpTypeVoid - %23 = OpTypeFunction %void - %float_0_5 = OpConstant %float 0.5 - %29 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 + %9 = OpTypeFunction %void + %v3float = OpTypeVector %float 3 +%float_0_549306154 = OpConstant %float 0.549306154 + %15 = OpConstantComposite %v3float %float_0_549306154 %float_0_549306154 %float_0_549306154 %_ptr_Function_v3float = OpTypePointer Function %v3float - %32 = OpTypeFunction %v4float - %tint_atanh = OpFunction %v3float None %9 - %x = OpFunctionParameter %v3float - %13 = OpLabel - %17 = OpFOrdGreaterThanEqual %v3bool %x %16 - %21 = OpExtInst %v3float %22 Atanh %x - %14 = OpSelect %v3float %17 %20 %21 - OpReturnValue %14 - OpFunctionEnd -%atanh_440cca = OpFunction %void None %23 - %26 = OpLabel - %res = OpVariable %_ptr_Function_v3float Function %20 - %27 = OpFunctionCall %v3float %tint_atanh %29 - OpStore %res %27 + %18 = OpConstantNull %v3float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atanh_440cca = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3float Function %18 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %32 - %34 = OpLabel - %35 = OpFunctionCall %void %atanh_440cca +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atanh_440cca OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %23 - %37 = OpLabel - %38 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %38 +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %23 - %40 = OpLabel - %41 = OpFunctionCall %void %atanh_440cca +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atanh_440cca OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %23 - %43 = OpLabel - %44 = OpFunctionCall %void %atanh_440cca +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %atanh_440cca OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl index 38fb4b66c2..1ab477791d 100644 --- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -vector tint_atanh(vector x) { - return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h)); -} - void atanh_5bf88d() { - vector res = tint_atanh((float16_t(0.0h)).xx); + vector res = (float16_t(0.0h)).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl index 76ddf5731d..17a23e66a9 100644 --- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec2 tint_atanh(f16vec2 x) { - return mix(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf))); -} - void atanh_5bf88d() { - f16vec2 res = tint_atanh(f16vec2(0.0hf)); + f16vec2 res = f16vec2(0.0hf); } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -f16vec2 tint_atanh(f16vec2 x) { - return mix(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf))); -} - void atanh_5bf88d() { - f16vec2 res = tint_atanh(f16vec2(0.0hf)); + f16vec2 res = f16vec2(0.0hf); } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec2 tint_atanh(f16vec2 x) { - return mix(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf))); -} - void atanh_5bf88d() { - f16vec2 res = tint_atanh(f16vec2(0.0hf)); + f16vec2 res = f16vec2(0.0hf); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl index 3b4f0b34bd..eb31ae2b04 100644 --- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -half2 tint_atanh(half2 x) { - return select(atanh(x), half2(0.0h), (x >= half2(1.0h))); -} - void atanh_5bf88d() { - half2 res = tint_atanh(half2(0.0h)); + half2 res = half2(0.0h); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm index d87c6402fa..e89e54e6ee 100644 --- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 45 +; Bound: 32 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %23 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_5bf88d "atanh_5bf88d" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,53 +32,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %half = OpTypeFloat 16 %v2half = OpTypeVector %half 2 - %9 = OpTypeFunction %v2half %v2half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %17 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0 - %bool = OpTypeBool - %v2bool = OpTypeVector %bool 2 - %21 = OpConstantNull %v2half - %void = OpTypeVoid - %24 = OpTypeFunction %void + %15 = OpConstantNull %v2half %_ptr_Function_v2half = OpTypePointer Function %v2half - %31 = OpTypeFunction %v4float + %18 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 - %tint_atanh = OpFunction %v2half None %9 - %x = OpFunctionParameter %v2half - %14 = OpLabel - %18 = OpFOrdGreaterThanEqual %v2bool %x %17 - %22 = OpExtInst %v2half %23 Atanh %x - %15 = OpSelect %v2half %18 %21 %22 - OpReturnValue %15 - OpFunctionEnd -%atanh_5bf88d = OpFunction %void None %24 - %27 = OpLabel - %res = OpVariable %_ptr_Function_v2half Function %21 - %28 = OpFunctionCall %v2half %tint_atanh %21 - OpStore %res %28 +%atanh_5bf88d = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2half Function %15 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %31 - %33 = OpLabel - %34 = OpFunctionCall %void %atanh_5bf88d +%vertex_main_inner = OpFunction %v4float None %18 + %20 = OpLabel + %21 = OpFunctionCall %void %atanh_5bf88d OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %24 - %36 = OpLabel - %37 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %37 +%vertex_main = OpFunction %void None %9 + %23 = OpLabel + %24 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %24 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %24 - %40 = OpLabel - %41 = OpFunctionCall %void %atanh_5bf88d +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %atanh_5bf88d OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %24 - %43 = OpLabel - %44 = OpFunctionCall %void %atanh_5bf88d +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %atanh_5bf88d OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl index eb5bf9631a..1b3ce0a638 100644 --- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float tint_atanh(float x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_7997d8() { - float res = tint_atanh(0.5f); + float res = 0.549306154f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl index eb5bf9631a..1b3ce0a638 100644 --- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float tint_atanh(float x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_7997d8() { - float res = tint_atanh(0.5f); + float res = 0.549306154f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl index 6a74200f27..df17e4dcb9 100644 --- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -float tint_atanh(float x) { - return ((x >= 1.0f) ? 0.0f : atanh(x)); -} - void atanh_7997d8() { - float res = tint_atanh(0.5f); + float res = 0.549306154f; } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -float tint_atanh(float x) { - return ((x >= 1.0f) ? 0.0f : atanh(x)); -} - void atanh_7997d8() { - float res = tint_atanh(0.5f); + float res = 0.549306154f; } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -float tint_atanh(float x) { - return ((x >= 1.0f) ? 0.0f : atanh(x)); -} - void atanh_7997d8() { - float res = tint_atanh(0.5f); + float res = 0.549306154f; } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl index 147d54ad7a..4e41260477 100644 --- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -float tint_atanh(float x) { - return select(atanh(x), 0.0f, (x >= 1.0f)); -} - void atanh_7997d8() { - float res = tint_atanh(0.5f); + float res = 0.549306154f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.spvasm index 8274b37f6c..7bde138247 100644 --- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 40 +; Bound: 30 ; Schema: 0 OpCapability Shader - %18 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_7997d8 "atanh_7997d8" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,48 +28,37 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %9 = OpTypeFunction %float %float - %float_1 = OpConstant %float 1 - %bool = OpTypeBool %void = OpTypeVoid - %19 = OpTypeFunction %void - %float_0_5 = OpConstant %float 0.5 + %9 = OpTypeFunction %void +%float_0_549306154 = OpConstant %float 0.549306154 %_ptr_Function_float = OpTypePointer Function %float - %27 = OpTypeFunction %v4float - %tint_atanh = OpFunction %float None %9 - %x = OpFunctionParameter %float + %16 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atanh_7997d8 = OpFunction %void None %9 %12 = OpLabel - %15 = OpFOrdGreaterThanEqual %bool %x %float_1 - %17 = OpExtInst %float %18 Atanh %x - %13 = OpSelect %float %15 %8 %17 - OpReturnValue %13 - OpFunctionEnd -%atanh_7997d8 = OpFunction %void None %19 - %22 = OpLabel %res = OpVariable %_ptr_Function_float Function %8 - %23 = OpFunctionCall %float %tint_atanh %float_0_5 - OpStore %res %23 + OpStore %res %float_0_549306154 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %27 - %29 = OpLabel - %30 = OpFunctionCall %void %atanh_7997d8 +%vertex_main_inner = OpFunction %v4float None %16 + %18 = OpLabel + %19 = OpFunctionCall %void %atanh_7997d8 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %19 - %32 = OpLabel - %33 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %33 +%vertex_main = OpFunction %void None %9 + %21 = OpLabel + %22 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %22 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %19 - %35 = OpLabel - %36 = OpFunctionCall %void %atanh_7997d8 +%fragment_main = OpFunction %void None %9 + %25 = OpLabel + %26 = OpFunctionCall %void %atanh_7997d8 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %19 - %38 = OpLabel - %39 = OpFunctionCall %void %atanh_7997d8 +%compute_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atanh_7997d8 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl index 4342cb056b..88aa1bdc6b 100644 --- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float2 tint_atanh(float2 x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_c0e634() { - float2 res = tint_atanh((0.5f).xx); + float2 res = (0.549306154f).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl index 4342cb056b..88aa1bdc6b 100644 --- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float2 tint_atanh(float2 x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_c0e634() { - float2 res = tint_atanh((0.5f).xx); + float2 res = (0.549306154f).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl index 1e9ca1a19b..9b5babf6cf 100644 --- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -vec2 tint_atanh(vec2 x) { - return mix(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f))); -} - void atanh_c0e634() { - vec2 res = tint_atanh(vec2(0.5f)); + vec2 res = vec2(0.549306154f); } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -vec2 tint_atanh(vec2 x) { - return mix(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f))); -} - void atanh_c0e634() { - vec2 res = tint_atanh(vec2(0.5f)); + vec2 res = vec2(0.549306154f); } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -vec2 tint_atanh(vec2 x) { - return mix(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f))); -} - void atanh_c0e634() { - vec2 res = tint_atanh(vec2(0.5f)); + vec2 res = vec2(0.549306154f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl index bc96c02f9e..631c14f59c 100644 --- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -float2 tint_atanh(float2 x) { - return select(atanh(x), float2(0.0f), (x >= float2(1.0f))); -} - void atanh_c0e634() { - float2 res = tint_atanh(float2(0.5f)); + float2 res = float2(0.549306154f); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.spvasm index 5fea132136..28434f1e91 100644 --- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 45 +; Bound: 33 ; Schema: 0 OpCapability Shader - %22 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_c0e634 "atanh_c0e634" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,53 +28,40 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %v2float = OpTypeVector %float 2 - %9 = OpTypeFunction %v2float %v2float - %float_1 = OpConstant %float 1 - %16 = OpConstantComposite %v2float %float_1 %float_1 - %bool = OpTypeBool - %v2bool = OpTypeVector %bool 2 - %20 = OpConstantNull %v2float %void = OpTypeVoid - %23 = OpTypeFunction %void - %float_0_5 = OpConstant %float 0.5 - %29 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %9 = OpTypeFunction %void + %v2float = OpTypeVector %float 2 +%float_0_549306154 = OpConstant %float 0.549306154 + %15 = OpConstantComposite %v2float %float_0_549306154 %float_0_549306154 %_ptr_Function_v2float = OpTypePointer Function %v2float - %32 = OpTypeFunction %v4float - %tint_atanh = OpFunction %v2float None %9 - %x = OpFunctionParameter %v2float - %13 = OpLabel - %17 = OpFOrdGreaterThanEqual %v2bool %x %16 - %21 = OpExtInst %v2float %22 Atanh %x - %14 = OpSelect %v2float %17 %20 %21 - OpReturnValue %14 - OpFunctionEnd -%atanh_c0e634 = OpFunction %void None %23 - %26 = OpLabel - %res = OpVariable %_ptr_Function_v2float Function %20 - %27 = OpFunctionCall %v2float %tint_atanh %29 - OpStore %res %27 + %18 = OpConstantNull %v2float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atanh_c0e634 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2float Function %18 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %32 - %34 = OpLabel - %35 = OpFunctionCall %void %atanh_c0e634 +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atanh_c0e634 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %23 - %37 = OpLabel - %38 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %38 +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %23 - %40 = OpLabel - %41 = OpFunctionCall %void %atanh_c0e634 +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atanh_c0e634 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %23 - %43 = OpLabel - %44 = OpFunctionCall %void %atanh_c0e634 +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %atanh_c0e634 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl index 1b3c054c9b..d4b3294a8f 100644 --- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float16_t tint_atanh(float16_t x) { - return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h)); -} - void atanh_d2d8cd() { - float16_t res = tint_atanh(float16_t(0.0h)); + float16_t res = float16_t(0.0h); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl index 3077ea81d3..2164d934b2 100644 --- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -float16_t tint_atanh(float16_t x) { - return ((x >= 1.0hf) ? 0.0hf : atanh(x)); -} - void atanh_d2d8cd() { - float16_t res = tint_atanh(0.0hf); + float16_t res = 0.0hf; } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -float16_t tint_atanh(float16_t x) { - return ((x >= 1.0hf) ? 0.0hf : atanh(x)); -} - void atanh_d2d8cd() { - float16_t res = tint_atanh(0.0hf); + float16_t res = 0.0hf; } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -float16_t tint_atanh(float16_t x) { - return ((x >= 1.0hf) ? 0.0hf : atanh(x)); -} - void atanh_d2d8cd() { - float16_t res = tint_atanh(0.0hf); + float16_t res = 0.0hf; } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl index 80f097f257..8d4995a6a1 100644 --- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -half tint_atanh(half x) { - return select(atanh(x), 0.0h, (x >= 1.0h)); -} - void atanh_d2d8cd() { - half res = tint_atanh(0.0h); + half res = 0.0h; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm index 82b8e8bc4b..343a043793 100644 --- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 42 +; Bound: 31 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %20 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_d2d8cd "atanh_d2d8cd" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,50 +32,38 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %half = OpTypeFloat 16 - %9 = OpTypeFunction %half %half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %bool = OpTypeBool - %18 = OpConstantNull %half %void = OpTypeVoid - %21 = OpTypeFunction %void + %9 = OpTypeFunction %void + %half = OpTypeFloat 16 + %14 = OpConstantNull %half %_ptr_Function_half = OpTypePointer Function %half - %28 = OpTypeFunction %v4float + %17 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 - %tint_atanh = OpFunction %half None %9 - %x = OpFunctionParameter %half - %13 = OpLabel - %16 = OpFOrdGreaterThanEqual %bool %x %half_0x1p_0 - %19 = OpExtInst %half %20 Atanh %x - %14 = OpSelect %half %16 %18 %19 - OpReturnValue %14 - OpFunctionEnd -%atanh_d2d8cd = OpFunction %void None %21 - %24 = OpLabel - %res = OpVariable %_ptr_Function_half Function %18 - %25 = OpFunctionCall %half %tint_atanh %18 - OpStore %res %25 +%atanh_d2d8cd = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_half Function %14 + OpStore %res %14 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %28 - %30 = OpLabel - %31 = OpFunctionCall %void %atanh_d2d8cd +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %atanh_d2d8cd OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %21 - %33 = OpLabel - %34 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %34 +%vertex_main = OpFunction %void None %9 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %21 - %37 = OpLabel - %38 = OpFunctionCall %void %atanh_d2d8cd +%fragment_main = OpFunction %void None %9 + %26 = OpLabel + %27 = OpFunctionCall %void %atanh_d2d8cd OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %21 - %40 = OpLabel - %41 = OpFunctionCall %void %atanh_d2d8cd +%compute_main = OpFunction %void None %9 + %29 = OpLabel + %30 = OpFunctionCall %void %atanh_d2d8cd OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl index ecec215946..f3ac16c604 100644 --- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -vector tint_atanh(vector x) { - return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h)); -} - void atanh_e3b450() { - vector res = tint_atanh((float16_t(0.0h)).xxxx); + vector res = (float16_t(0.0h)).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl index 32a26fcce4..73f8e70142 100644 --- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec4 tint_atanh(f16vec4 x) { - return mix(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf))); -} - void atanh_e3b450() { - f16vec4 res = tint_atanh(f16vec4(0.0hf)); + f16vec4 res = f16vec4(0.0hf); } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -f16vec4 tint_atanh(f16vec4 x) { - return mix(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf))); -} - void atanh_e3b450() { - f16vec4 res = tint_atanh(f16vec4(0.0hf)); + f16vec4 res = f16vec4(0.0hf); } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec4 tint_atanh(f16vec4 x) { - return mix(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf))); -} - void atanh_e3b450() { - f16vec4 res = tint_atanh(f16vec4(0.0hf)); + f16vec4 res = f16vec4(0.0hf); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl index 8528cf7e4b..b659da600c 100644 --- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -half4 tint_atanh(half4 x) { - return select(atanh(x), half4(0.0h), (x >= half4(1.0h))); -} - void atanh_e3b450() { - half4 res = tint_atanh(half4(0.0h)); + half4 res = half4(0.0h); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm index 7aba5f8cbf..64e46bdaa4 100644 --- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 45 +; Bound: 32 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %23 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_e3b450 "atanh_e3b450" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,53 +32,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %half = OpTypeFloat 16 %v4half = OpTypeVector %half 4 - %9 = OpTypeFunction %v4half %v4half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %17 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 - %bool = OpTypeBool - %v4bool = OpTypeVector %bool 4 - %21 = OpConstantNull %v4half - %void = OpTypeVoid - %24 = OpTypeFunction %void + %15 = OpConstantNull %v4half %_ptr_Function_v4half = OpTypePointer Function %v4half - %31 = OpTypeFunction %v4float + %18 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 - %tint_atanh = OpFunction %v4half None %9 - %x = OpFunctionParameter %v4half - %14 = OpLabel - %18 = OpFOrdGreaterThanEqual %v4bool %x %17 - %22 = OpExtInst %v4half %23 Atanh %x - %15 = OpSelect %v4half %18 %21 %22 - OpReturnValue %15 - OpFunctionEnd -%atanh_e3b450 = OpFunction %void None %24 - %27 = OpLabel - %res = OpVariable %_ptr_Function_v4half Function %21 - %28 = OpFunctionCall %v4half %tint_atanh %21 - OpStore %res %28 +%atanh_e3b450 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4half Function %15 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %31 - %33 = OpLabel - %34 = OpFunctionCall %void %atanh_e3b450 +%vertex_main_inner = OpFunction %v4float None %18 + %20 = OpLabel + %21 = OpFunctionCall %void %atanh_e3b450 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %24 - %36 = OpLabel - %37 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %37 +%vertex_main = OpFunction %void None %9 + %23 = OpLabel + %24 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %24 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %24 - %40 = OpLabel - %41 = OpFunctionCall %void %atanh_e3b450 +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %atanh_e3b450 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %24 - %43 = OpLabel - %44 = OpFunctionCall %void %atanh_e3b450 +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %atanh_e3b450 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl index 0b739c0f20..fc6fa462e0 100644 --- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -vector tint_atanh(vector x) { - return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h)); -} - void atanh_ec4b06() { - vector res = tint_atanh((float16_t(0.0h)).xxx); + vector res = (float16_t(0.0h)).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl index 6c8e11bd52..fc4864988f 100644 --- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec3 tint_atanh(f16vec3 x) { - return mix(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf))); -} - void atanh_ec4b06() { - f16vec3 res = tint_atanh(f16vec3(0.0hf)); + f16vec3 res = f16vec3(0.0hf); } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -f16vec3 tint_atanh(f16vec3 x) { - return mix(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf))); -} - void atanh_ec4b06() { - f16vec3 res = tint_atanh(f16vec3(0.0hf)); + f16vec3 res = f16vec3(0.0hf); } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec3 tint_atanh(f16vec3 x) { - return mix(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf))); -} - void atanh_ec4b06() { - f16vec3 res = tint_atanh(f16vec3(0.0hf)); + f16vec3 res = f16vec3(0.0hf); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl index e42af54c7e..12909485f1 100644 --- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -half3 tint_atanh(half3 x) { - return select(atanh(x), half3(0.0h), (x >= half3(1.0h))); -} - void atanh_ec4b06() { - half3 res = tint_atanh(half3(0.0h)); + half3 res = half3(0.0h); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm index f8bdc5c7bf..49e6e5ae39 100644 --- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 45 +; Bound: 32 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %23 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_ec4b06 "atanh_ec4b06" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,53 +32,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %half = OpTypeFloat 16 %v3half = OpTypeVector %half 3 - %9 = OpTypeFunction %v3half %v3half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %17 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 - %bool = OpTypeBool - %v3bool = OpTypeVector %bool 3 - %21 = OpConstantNull %v3half - %void = OpTypeVoid - %24 = OpTypeFunction %void + %15 = OpConstantNull %v3half %_ptr_Function_v3half = OpTypePointer Function %v3half - %31 = OpTypeFunction %v4float + %18 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 - %tint_atanh = OpFunction %v3half None %9 - %x = OpFunctionParameter %v3half - %14 = OpLabel - %18 = OpFOrdGreaterThanEqual %v3bool %x %17 - %22 = OpExtInst %v3half %23 Atanh %x - %15 = OpSelect %v3half %18 %21 %22 - OpReturnValue %15 - OpFunctionEnd -%atanh_ec4b06 = OpFunction %void None %24 - %27 = OpLabel - %res = OpVariable %_ptr_Function_v3half Function %21 - %28 = OpFunctionCall %v3half %tint_atanh %21 - OpStore %res %28 +%atanh_ec4b06 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3half Function %15 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %31 - %33 = OpLabel - %34 = OpFunctionCall %void %atanh_ec4b06 +%vertex_main_inner = OpFunction %v4float None %18 + %20 = OpLabel + %21 = OpFunctionCall %void %atanh_ec4b06 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %24 - %36 = OpLabel - %37 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %37 +%vertex_main = OpFunction %void None %9 + %23 = OpLabel + %24 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %24 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %24 - %40 = OpLabel - %41 = OpFunctionCall %void %atanh_ec4b06 +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %atanh_ec4b06 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %24 - %43 = OpLabel - %44 = OpFunctionCall %void %atanh_ec4b06 +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %atanh_ec4b06 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl index 8fa46153dc..ae5ce9c919 100644 --- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl @@ -1,9 +1,5 @@ -float4 tint_atanh(float4 x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_f3e01b() { - float4 res = tint_atanh((0.5f).xxxx); + float4 res = (0.549306154f).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl index 8fa46153dc..ae5ce9c919 100644 --- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl @@ -1,9 +1,5 @@ -float4 tint_atanh(float4 x) { - return (log(((1.0f + x) / (1.0f - x))) * 0.5f); -} - void atanh_f3e01b() { - float4 res = tint_atanh((0.5f).xxxx); + float4 res = (0.549306154f).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl index e86a88fdcb..882eea2ae8 100644 --- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -vec4 tint_atanh(vec4 x) { - return mix(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f))); -} - void atanh_f3e01b() { - vec4 res = tint_atanh(vec4(0.5f)); + vec4 res = vec4(0.549306154f); } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -vec4 tint_atanh(vec4 x) { - return mix(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f))); -} - void atanh_f3e01b() { - vec4 res = tint_atanh(vec4(0.5f)); + vec4 res = vec4(0.549306154f); } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -vec4 tint_atanh(vec4 x) { - return mix(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f))); -} - void atanh_f3e01b() { - vec4 res = tint_atanh(vec4(0.5f)); + vec4 res = vec4(0.549306154f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl index ea83ed2063..2b04fe0000 100644 --- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl @@ -1,12 +1,8 @@ #include using namespace metal; -float4 tint_atanh(float4 x) { - return select(atanh(x), float4(0.0f), (x >= float4(1.0f))); -} - void atanh_f3e01b() { - float4 res = tint_atanh(float4(0.5f)); + float4 res = float4(0.549306154f); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.spvasm index c0daec0631..2335ace890 100644 --- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 43 +; Bound: 31 ; Schema: 0 OpCapability Shader - %20 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_atanh "tint_atanh" - OpName %x "x" OpName %atanh_f3e01b "atanh_f3e01b" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,51 +28,38 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %9 = OpTypeFunction %v4float %v4float - %float_1 = OpConstant %float 1 - %15 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 - %bool = OpTypeBool - %v4bool = OpTypeVector %bool 4 %void = OpTypeVoid - %21 = OpTypeFunction %void - %float_0_5 = OpConstant %float 0.5 - %27 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5 + %9 = OpTypeFunction %void +%float_0_549306154 = OpConstant %float 0.549306154 + %14 = OpConstantComposite %v4float %float_0_549306154 %float_0_549306154 %float_0_549306154 %float_0_549306154 %_ptr_Function_v4float = OpTypePointer Function %v4float - %30 = OpTypeFunction %v4float - %tint_atanh = OpFunction %v4float None %9 - %x = OpFunctionParameter %v4float + %17 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atanh_f3e01b = OpFunction %void None %9 %12 = OpLabel - %16 = OpFOrdGreaterThanEqual %v4bool %x %15 - %19 = OpExtInst %v4float %20 Atanh %x - %13 = OpSelect %v4float %16 %5 %19 - OpReturnValue %13 - OpFunctionEnd -%atanh_f3e01b = OpFunction %void None %21 - %24 = OpLabel %res = OpVariable %_ptr_Function_v4float Function %5 - %25 = OpFunctionCall %v4float %tint_atanh %27 - OpStore %res %25 + OpStore %res %14 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %30 - %32 = OpLabel - %33 = OpFunctionCall %void %atanh_f3e01b +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %atanh_f3e01b OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %21 - %35 = OpLabel - %36 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %36 +%vertex_main = OpFunction %void None %9 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %21 - %38 = OpLabel - %39 = OpFunctionCall %void %atanh_f3e01b +%fragment_main = OpFunction %void None %9 + %26 = OpLabel + %27 = OpFunctionCall %void %atanh_f3e01b OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %21 - %41 = OpLabel - %42 = OpFunctionCall %void %atanh_f3e01b +%compute_main = OpFunction %void None %9 + %29 = OpLabel + %30 = OpFunctionCall %void %atanh_f3e01b OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.glsl index 99d917d4b9..c0a87bf807 100644 --- a/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -float tint_saturate(float v) { - return clamp(v, 0.0f, 1.0f); -} - void saturate_270da5() { - float res = tint_saturate(2.0f); + float res = 1.0f; } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -float tint_saturate(float v) { - return clamp(v, 0.0f, 1.0f); -} - void saturate_270da5() { - float res = tint_saturate(2.0f); + float res = 1.0f; } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -float tint_saturate(float v) { - return clamp(v, 0.0f, 1.0f); -} - void saturate_270da5() { - float res = tint_saturate(2.0f); + float res = 1.0f; } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.spvasm index 47550a299e..323b5715f0 100644 --- a/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 37 +; Bound: 29 ; Schema: 0 OpCapability Shader - %14 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_270da5 "saturate_270da5" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,45 +28,36 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %9 = OpTypeFunction %float %float - %float_1 = OpConstant %float 1 %void = OpTypeVoid - %16 = OpTypeFunction %void - %float_2 = OpConstant %float 2 + %9 = OpTypeFunction %void + %float_1 = OpConstant %float 1 %_ptr_Function_float = OpTypePointer Function %float - %24 = OpTypeFunction %v4float -%tint_saturate = OpFunction %float None %9 - %v = OpFunctionParameter %float + %16 = OpTypeFunction %v4float +%saturate_270da5 = OpFunction %void None %9 %12 = OpLabel - %13 = OpExtInst %float %14 NClamp %v %8 %float_1 - OpReturnValue %13 - OpFunctionEnd -%saturate_270da5 = OpFunction %void None %16 - %19 = OpLabel %res = OpVariable %_ptr_Function_float Function %8 - %20 = OpFunctionCall %float %tint_saturate %float_2 - OpStore %res %20 + OpStore %res %float_1 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %24 - %26 = OpLabel - %27 = OpFunctionCall %void %saturate_270da5 +%vertex_main_inner = OpFunction %v4float None %16 + %18 = OpLabel + %19 = OpFunctionCall %void %saturate_270da5 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %16 - %29 = OpLabel - %30 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %30 +%vertex_main = OpFunction %void None %9 + %21 = OpLabel + %22 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %22 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %16 - %32 = OpLabel - %33 = OpFunctionCall %void %saturate_270da5 +%fragment_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %void %saturate_270da5 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %16 - %35 = OpLabel - %36 = OpFunctionCall %void %saturate_270da5 +%compute_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %saturate_270da5 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl index 41d59bd395..683f6d0d55 100644 --- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec3 tint_saturate(f16vec3 v) { - return clamp(v, f16vec3(0.0hf), f16vec3(1.0hf)); -} - void saturate_462535() { - f16vec3 res = tint_saturate(f16vec3(0.0hf)); + f16vec3 res = f16vec3(0.0hf); } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -f16vec3 tint_saturate(f16vec3 v) { - return clamp(v, f16vec3(0.0hf), f16vec3(1.0hf)); -} - void saturate_462535() { - f16vec3 res = tint_saturate(f16vec3(0.0hf)); + f16vec3 res = f16vec3(0.0hf); } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec3 tint_saturate(f16vec3 v) { - return clamp(v, f16vec3(0.0hf), f16vec3(1.0hf)); -} - void saturate_462535() { - f16vec3 res = tint_saturate(f16vec3(0.0hf)); + f16vec3 res = f16vec3(0.0hf); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm index 70b0d519f0..dfa8ca22e7 100644 --- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 41 +; Bound: 32 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %16 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_462535 "saturate_462535" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,49 +32,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %half = OpTypeFloat 16 %v3half = OpTypeVector %half 3 - %9 = OpTypeFunction %v3half %v3half - %17 = OpConstantNull %v3half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %19 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 - %void = OpTypeVoid - %20 = OpTypeFunction %void + %15 = OpConstantNull %v3half %_ptr_Function_v3half = OpTypePointer Function %v3half - %27 = OpTypeFunction %v4float + %18 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 -%tint_saturate = OpFunction %v3half None %9 - %v = OpFunctionParameter %v3half - %14 = OpLabel - %15 = OpExtInst %v3half %16 NClamp %v %17 %19 - OpReturnValue %15 - OpFunctionEnd -%saturate_462535 = OpFunction %void None %20 - %23 = OpLabel - %res = OpVariable %_ptr_Function_v3half Function %17 - %24 = OpFunctionCall %v3half %tint_saturate %17 - OpStore %res %24 +%saturate_462535 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3half Function %15 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %27 - %29 = OpLabel - %30 = OpFunctionCall %void %saturate_462535 +%vertex_main_inner = OpFunction %v4float None %18 + %20 = OpLabel + %21 = OpFunctionCall %void %saturate_462535 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %20 - %32 = OpLabel - %33 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %33 +%vertex_main = OpFunction %void None %9 + %23 = OpLabel + %24 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %24 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %20 - %36 = OpLabel - %37 = OpFunctionCall %void %saturate_462535 +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %saturate_462535 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %20 - %39 = OpLabel - %40 = OpFunctionCall %void %saturate_462535 +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %saturate_462535 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.glsl index 8b4840ef0e..a4d1fe9628 100644 --- a/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -vec2 tint_saturate(vec2 v) { - return clamp(v, vec2(0.0f), vec2(1.0f)); -} - void saturate_51567f() { - vec2 res = tint_saturate(vec2(2.0f)); + vec2 res = vec2(1.0f); } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -vec2 tint_saturate(vec2 v) { - return clamp(v, vec2(0.0f), vec2(1.0f)); -} - void saturate_51567f() { - vec2 res = tint_saturate(vec2(2.0f)); + vec2 res = vec2(1.0f); } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -vec2 tint_saturate(vec2 v) { - return clamp(v, vec2(0.0f), vec2(1.0f)); -} - void saturate_51567f() { - vec2 res = tint_saturate(vec2(2.0f)); + vec2 res = vec2(1.0f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.spvasm index 563368c3d2..0528cb2b74 100644 --- a/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 41 +; Bound: 32 ; Schema: 0 OpCapability Shader - %15 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_51567f "saturate_51567f" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,49 +28,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %v2float = OpTypeVector %float 2 - %9 = OpTypeFunction %v2float %v2float - %16 = OpConstantNull %v2float - %float_1 = OpConstant %float 1 - %18 = OpConstantComposite %v2float %float_1 %float_1 %void = OpTypeVoid - %19 = OpTypeFunction %void - %float_2 = OpConstant %float 2 - %25 = OpConstantComposite %v2float %float_2 %float_2 + %9 = OpTypeFunction %void + %v2float = OpTypeVector %float 2 + %float_1 = OpConstant %float 1 + %15 = OpConstantComposite %v2float %float_1 %float_1 %_ptr_Function_v2float = OpTypePointer Function %v2float - %28 = OpTypeFunction %v4float -%tint_saturate = OpFunction %v2float None %9 - %v = OpFunctionParameter %v2float - %13 = OpLabel - %14 = OpExtInst %v2float %15 NClamp %v %16 %18 - OpReturnValue %14 - OpFunctionEnd -%saturate_51567f = OpFunction %void None %19 - %22 = OpLabel - %res = OpVariable %_ptr_Function_v2float Function %16 - %23 = OpFunctionCall %v2float %tint_saturate %25 - OpStore %res %23 + %18 = OpConstantNull %v2float + %19 = OpTypeFunction %v4float +%saturate_51567f = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2float Function %18 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %28 - %30 = OpLabel - %31 = OpFunctionCall %void %saturate_51567f +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %saturate_51567f OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %19 - %33 = OpLabel - %34 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %34 +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %19 - %36 = OpLabel - %37 = OpFunctionCall %void %saturate_51567f +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %saturate_51567f OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %19 - %39 = OpLabel - %40 = OpFunctionCall %void %saturate_51567f +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %saturate_51567f OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.glsl index c5ca265474..cf6681e607 100644 --- a/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -vec3 tint_saturate(vec3 v) { - return clamp(v, vec3(0.0f), vec3(1.0f)); -} - void saturate_6bcddf() { - vec3 res = tint_saturate(vec3(2.0f)); + vec3 res = vec3(1.0f); } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -vec3 tint_saturate(vec3 v) { - return clamp(v, vec3(0.0f), vec3(1.0f)); -} - void saturate_6bcddf() { - vec3 res = tint_saturate(vec3(2.0f)); + vec3 res = vec3(1.0f); } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -vec3 tint_saturate(vec3 v) { - return clamp(v, vec3(0.0f), vec3(1.0f)); -} - void saturate_6bcddf() { - vec3 res = tint_saturate(vec3(2.0f)); + vec3 res = vec3(1.0f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.spvasm index 5559bd2a6f..ea1db9778f 100644 --- a/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 41 +; Bound: 32 ; Schema: 0 OpCapability Shader - %15 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_6bcddf "saturate_6bcddf" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,49 +28,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %v3float = OpTypeVector %float 3 - %9 = OpTypeFunction %v3float %v3float - %16 = OpConstantNull %v3float - %float_1 = OpConstant %float 1 - %18 = OpConstantComposite %v3float %float_1 %float_1 %float_1 %void = OpTypeVoid - %19 = OpTypeFunction %void - %float_2 = OpConstant %float 2 - %25 = OpConstantComposite %v3float %float_2 %float_2 %float_2 + %9 = OpTypeFunction %void + %v3float = OpTypeVector %float 3 + %float_1 = OpConstant %float 1 + %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1 %_ptr_Function_v3float = OpTypePointer Function %v3float - %28 = OpTypeFunction %v4float -%tint_saturate = OpFunction %v3float None %9 - %v = OpFunctionParameter %v3float - %13 = OpLabel - %14 = OpExtInst %v3float %15 NClamp %v %16 %18 - OpReturnValue %14 - OpFunctionEnd -%saturate_6bcddf = OpFunction %void None %19 - %22 = OpLabel - %res = OpVariable %_ptr_Function_v3float Function %16 - %23 = OpFunctionCall %v3float %tint_saturate %25 - OpStore %res %23 + %18 = OpConstantNull %v3float + %19 = OpTypeFunction %v4float +%saturate_6bcddf = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3float Function %18 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %28 - %30 = OpLabel - %31 = OpFunctionCall %void %saturate_6bcddf +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %saturate_6bcddf OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %19 - %33 = OpLabel - %34 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %34 +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %19 - %36 = OpLabel - %37 = OpFunctionCall %void %saturate_6bcddf +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %saturate_6bcddf OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %19 - %39 = OpLabel - %40 = OpFunctionCall %void %saturate_6bcddf +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %saturate_6bcddf OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.glsl index 5ef994c25f..63243591d4 100644 --- a/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.glsl @@ -1,11 +1,7 @@ #version 310 es -vec4 tint_saturate(vec4 v) { - return clamp(v, vec4(0.0f), vec4(1.0f)); -} - void saturate_a5b571() { - vec4 res = tint_saturate(vec4(2.0f)); + vec4 res = vec4(1.0f); } vec4 vertex_main() { @@ -24,12 +20,8 @@ void main() { #version 310 es precision mediump float; -vec4 tint_saturate(vec4 v) { - return clamp(v, vec4(0.0f), vec4(1.0f)); -} - void saturate_a5b571() { - vec4 res = tint_saturate(vec4(2.0f)); + vec4 res = vec4(1.0f); } void fragment_main() { @@ -42,12 +34,8 @@ void main() { } #version 310 es -vec4 tint_saturate(vec4 v) { - return clamp(v, vec4(0.0f), vec4(1.0f)); -} - void saturate_a5b571() { - vec4 res = tint_saturate(vec4(2.0f)); + vec4 res = vec4(1.0f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.spvasm index cc9e8d8cb4..ce06562700 100644 --- a/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 39 +; Bound: 30 ; Schema: 0 OpCapability Shader - %14 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -13,8 +12,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_a5b571 "saturate_a5b571" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -31,47 +28,37 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %9 = OpTypeFunction %v4float %v4float - %float_1 = OpConstant %float 1 - %16 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %void = OpTypeVoid - %17 = OpTypeFunction %void - %float_2 = OpConstant %float 2 - %23 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 + %9 = OpTypeFunction %void + %float_1 = OpConstant %float 1 + %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %_ptr_Function_v4float = OpTypePointer Function %v4float - %26 = OpTypeFunction %v4float -%tint_saturate = OpFunction %v4float None %9 - %v = OpFunctionParameter %v4float + %17 = OpTypeFunction %v4float +%saturate_a5b571 = OpFunction %void None %9 %12 = OpLabel - %13 = OpExtInst %v4float %14 NClamp %v %5 %16 - OpReturnValue %13 - OpFunctionEnd -%saturate_a5b571 = OpFunction %void None %17 - %20 = OpLabel %res = OpVariable %_ptr_Function_v4float Function %5 - %21 = OpFunctionCall %v4float %tint_saturate %23 - OpStore %res %21 + OpStore %res %14 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %26 - %28 = OpLabel - %29 = OpFunctionCall %void %saturate_a5b571 +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %saturate_a5b571 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %17 - %31 = OpLabel - %32 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %32 +%vertex_main = OpFunction %void None %9 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %17 - %34 = OpLabel - %35 = OpFunctionCall %void %saturate_a5b571 +%fragment_main = OpFunction %void None %9 + %25 = OpLabel + %26 = OpFunctionCall %void %saturate_a5b571 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %17 - %37 = OpLabel - %38 = OpFunctionCall %void %saturate_a5b571 +%compute_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %saturate_a5b571 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl index 8a515ae8ef..821559fc63 100644 --- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec2 tint_saturate(f16vec2 v) { - return clamp(v, f16vec2(0.0hf), f16vec2(1.0hf)); -} - void saturate_cd2028() { - f16vec2 res = tint_saturate(f16vec2(0.0hf)); + f16vec2 res = f16vec2(0.0hf); } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -f16vec2 tint_saturate(f16vec2 v) { - return clamp(v, f16vec2(0.0hf), f16vec2(1.0hf)); -} - void saturate_cd2028() { - f16vec2 res = tint_saturate(f16vec2(0.0hf)); + f16vec2 res = f16vec2(0.0hf); } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec2 tint_saturate(f16vec2 v) { - return clamp(v, f16vec2(0.0hf), f16vec2(1.0hf)); -} - void saturate_cd2028() { - f16vec2 res = tint_saturate(f16vec2(0.0hf)); + f16vec2 res = f16vec2(0.0hf); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm index 14788ee03f..d1d24df056 100644 --- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 41 +; Bound: 32 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %16 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_cd2028 "saturate_cd2028" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,49 +32,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %half = OpTypeFloat 16 %v2half = OpTypeVector %half 2 - %9 = OpTypeFunction %v2half %v2half - %17 = OpConstantNull %v2half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %19 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0 - %void = OpTypeVoid - %20 = OpTypeFunction %void + %15 = OpConstantNull %v2half %_ptr_Function_v2half = OpTypePointer Function %v2half - %27 = OpTypeFunction %v4float + %18 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 -%tint_saturate = OpFunction %v2half None %9 - %v = OpFunctionParameter %v2half - %14 = OpLabel - %15 = OpExtInst %v2half %16 NClamp %v %17 %19 - OpReturnValue %15 - OpFunctionEnd -%saturate_cd2028 = OpFunction %void None %20 - %23 = OpLabel - %res = OpVariable %_ptr_Function_v2half Function %17 - %24 = OpFunctionCall %v2half %tint_saturate %17 - OpStore %res %24 +%saturate_cd2028 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2half Function %15 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %27 - %29 = OpLabel - %30 = OpFunctionCall %void %saturate_cd2028 +%vertex_main_inner = OpFunction %v4float None %18 + %20 = OpLabel + %21 = OpFunctionCall %void %saturate_cd2028 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %20 - %32 = OpLabel - %33 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %33 +%vertex_main = OpFunction %void None %9 + %23 = OpLabel + %24 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %24 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %20 - %36 = OpLabel - %37 = OpFunctionCall %void %saturate_cd2028 +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %saturate_cd2028 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %20 - %39 = OpLabel - %40 = OpFunctionCall %void %saturate_cd2028 +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %saturate_cd2028 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl index 32ac9280d2..96296a0f39 100644 --- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec4 tint_saturate(f16vec4 v) { - return clamp(v, f16vec4(0.0hf), f16vec4(1.0hf)); -} - void saturate_dcde71() { - f16vec4 res = tint_saturate(f16vec4(0.0hf)); + f16vec4 res = f16vec4(0.0hf); } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -f16vec4 tint_saturate(f16vec4 v) { - return clamp(v, f16vec4(0.0hf), f16vec4(1.0hf)); -} - void saturate_dcde71() { - f16vec4 res = tint_saturate(f16vec4(0.0hf)); + f16vec4 res = f16vec4(0.0hf); } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -f16vec4 tint_saturate(f16vec4 v) { - return clamp(v, f16vec4(0.0hf), f16vec4(1.0hf)); -} - void saturate_dcde71() { - f16vec4 res = tint_saturate(f16vec4(0.0hf)); + f16vec4 res = f16vec4(0.0hf); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm index 3589db3e2a..c2fbd4a8c1 100644 --- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 41 +; Bound: 32 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %16 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_dcde71 "saturate_dcde71" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,49 +32,39 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %half = OpTypeFloat 16 %v4half = OpTypeVector %half 4 - %9 = OpTypeFunction %v4half %v4half - %17 = OpConstantNull %v4half -%half_0x1p_0 = OpConstant %half 0x1p+0 - %19 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 - %void = OpTypeVoid - %20 = OpTypeFunction %void + %15 = OpConstantNull %v4half %_ptr_Function_v4half = OpTypePointer Function %v4half - %27 = OpTypeFunction %v4float + %18 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 -%tint_saturate = OpFunction %v4half None %9 - %v = OpFunctionParameter %v4half - %14 = OpLabel - %15 = OpExtInst %v4half %16 NClamp %v %17 %19 - OpReturnValue %15 - OpFunctionEnd -%saturate_dcde71 = OpFunction %void None %20 - %23 = OpLabel - %res = OpVariable %_ptr_Function_v4half Function %17 - %24 = OpFunctionCall %v4half %tint_saturate %17 - OpStore %res %24 +%saturate_dcde71 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4half Function %15 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %27 - %29 = OpLabel - %30 = OpFunctionCall %void %saturate_dcde71 +%vertex_main_inner = OpFunction %v4float None %18 + %20 = OpLabel + %21 = OpFunctionCall %void %saturate_dcde71 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %20 - %32 = OpLabel - %33 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %33 +%vertex_main = OpFunction %void None %9 + %23 = OpLabel + %24 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %24 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %20 - %36 = OpLabel - %37 = OpFunctionCall %void %saturate_dcde71 +%fragment_main = OpFunction %void None %9 + %27 = OpLabel + %28 = OpFunctionCall %void %saturate_dcde71 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %20 - %39 = OpLabel - %40 = OpFunctionCall %void %saturate_dcde71 +%compute_main = OpFunction %void None %9 + %30 = OpLabel + %31 = OpFunctionCall %void %saturate_dcde71 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl index f144f912ac..4aab0f3ee1 100644 --- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl @@ -1,12 +1,8 @@ #version 310 es #extension GL_AMD_gpu_shader_half_float : require -float16_t tint_saturate(float16_t v) { - return clamp(v, 0.0hf, 1.0hf); -} - void saturate_e8df56() { - float16_t res = tint_saturate(0.0hf); + float16_t res = 0.0hf; } vec4 vertex_main() { @@ -26,12 +22,8 @@ void main() { #extension GL_AMD_gpu_shader_half_float : require precision mediump float; -float16_t tint_saturate(float16_t v) { - return clamp(v, 0.0hf, 1.0hf); -} - void saturate_e8df56() { - float16_t res = tint_saturate(0.0hf); + float16_t res = 0.0hf; } void fragment_main() { @@ -45,12 +37,8 @@ void main() { #version 310 es #extension GL_AMD_gpu_shader_half_float : require -float16_t tint_saturate(float16_t v) { - return clamp(v, 0.0hf, 1.0hf); -} - void saturate_e8df56() { - float16_t res = tint_saturate(0.0hf); + float16_t res = 0.0hf; } void compute_main() { diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm index e71aca8857..846ff53d53 100644 --- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm @@ -1,14 +1,13 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 39 +; Bound: 31 ; Schema: 0 OpCapability Shader OpCapability Float16 OpCapability UniformAndStorageBuffer16BitAccess OpCapability StorageBuffer16BitAccess OpCapability StorageInputOutput16 - %15 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -17,8 +16,6 @@ OpExecutionMode %compute_main LocalSize 1 1 1 OpName %value "value" OpName %vertex_point_size "vertex_point_size" - OpName %tint_saturate "tint_saturate" - OpName %v "v" OpName %saturate_e8df56 "saturate_e8df56" OpName %res "res" OpName %vertex_main_inner "vertex_main_inner" @@ -35,47 +32,38 @@ %_ptr_Output_float = OpTypePointer Output %float %8 = OpConstantNull %float %vertex_point_size = OpVariable %_ptr_Output_float Output %8 - %half = OpTypeFloat 16 - %9 = OpTypeFunction %half %half - %16 = OpConstantNull %half -%half_0x1p_0 = OpConstant %half 0x1p+0 %void = OpTypeVoid - %18 = OpTypeFunction %void + %9 = OpTypeFunction %void + %half = OpTypeFloat 16 + %14 = OpConstantNull %half %_ptr_Function_half = OpTypePointer Function %half - %25 = OpTypeFunction %v4float + %17 = OpTypeFunction %v4float %float_1 = OpConstant %float 1 -%tint_saturate = OpFunction %half None %9 - %v = OpFunctionParameter %half - %13 = OpLabel - %14 = OpExtInst %half %15 NClamp %v %16 %half_0x1p_0 - OpReturnValue %14 - OpFunctionEnd -%saturate_e8df56 = OpFunction %void None %18 - %21 = OpLabel - %res = OpVariable %_ptr_Function_half Function %16 - %22 = OpFunctionCall %half %tint_saturate %16 - OpStore %res %22 +%saturate_e8df56 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_half Function %14 + OpStore %res %14 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %25 - %27 = OpLabel - %28 = OpFunctionCall %void %saturate_e8df56 +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %saturate_e8df56 OpReturnValue %5 OpFunctionEnd -%vertex_main = OpFunction %void None %18 - %30 = OpLabel - %31 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %31 +%vertex_main = OpFunction %void None %9 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %18 - %34 = OpLabel - %35 = OpFunctionCall %void %saturate_e8df56 +%fragment_main = OpFunction %void None %9 + %26 = OpLabel + %27 = OpFunctionCall %void %saturate_e8df56 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %18 - %37 = OpLabel - %38 = OpFunctionCall %void %saturate_e8df56 +%compute_main = OpFunction %void None %9 + %29 = OpLabel + %30 = OpFunctionCall %void %saturate_e8df56 OpReturn OpFunctionEnd