intrinsics: Fix signature of ldexp()
The second parameter must not be a u32. Fixed: tint:1078 Bug: tint:1079 Change-Id: Id7a9cd881c4fec0f262931c2e4c263310e59c25d Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60204 Auto-Submit: Ben Clayton <bclayton@google.com> Reviewed-by: David Neto <dneto@google.com> Reviewed-by: James Price <jrprice@google.com> Commit-Queue: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
c0f1ed4fe7
commit
d35f8d99e7
|
@ -3812,7 +3812,7 @@ constexpr ParameterInfo kParameters[] = {
|
||||||
{
|
{
|
||||||
/* [388] */
|
/* [388] */
|
||||||
/* usage */ ParameterUsage::kNone,
|
/* usage */ ParameterUsage::kNone,
|
||||||
/* matcher indices */ &kMatcherIndices[5],
|
/* matcher indices */ &kMatcherIndices[6],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [389] */
|
/* [389] */
|
||||||
|
@ -3912,7 +3912,7 @@ constexpr ParameterInfo kParameters[] = {
|
||||||
{
|
{
|
||||||
/* [408] */
|
/* [408] */
|
||||||
/* usage */ ParameterUsage::kNone,
|
/* usage */ ParameterUsage::kNone,
|
||||||
/* matcher indices */ &kMatcherIndices[44],
|
/* matcher indices */ &kMatcherIndices[4],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [409] */
|
/* [409] */
|
||||||
|
@ -7361,9 +7361,9 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
{
|
{
|
||||||
/* [195] */
|
/* [195] */
|
||||||
/* num parameters */ 2,
|
/* num parameters */ 2,
|
||||||
/* num open types */ 1,
|
/* num open types */ 0,
|
||||||
/* num open numbers */ 0,
|
/* num open numbers */ 0,
|
||||||
/* open types */ &kOpenTypes[2],
|
/* open types */ &kOpenTypes[4],
|
||||||
/* open numbers */ &kOpenNumbers[7],
|
/* open numbers */ &kOpenNumbers[7],
|
||||||
/* parameters */ &kParameters[387],
|
/* parameters */ &kParameters[387],
|
||||||
/* return matcher indices */ &kMatcherIndices[7],
|
/* return matcher indices */ &kMatcherIndices[7],
|
||||||
|
@ -7373,9 +7373,9 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
{
|
{
|
||||||
/* [196] */
|
/* [196] */
|
||||||
/* num parameters */ 2,
|
/* num parameters */ 2,
|
||||||
/* num open types */ 1,
|
/* num open types */ 0,
|
||||||
/* num open numbers */ 1,
|
/* num open numbers */ 1,
|
||||||
/* open types */ &kOpenTypes[2],
|
/* open types */ &kOpenTypes[4],
|
||||||
/* open numbers */ &kOpenNumbers[1],
|
/* open numbers */ &kOpenNumbers[1],
|
||||||
/* parameters */ &kParameters[407],
|
/* parameters */ &kParameters[407],
|
||||||
/* return matcher indices */ &kMatcherIndices[10],
|
/* return matcher indices */ &kMatcherIndices[10],
|
||||||
|
@ -8638,8 +8638,8 @@ constexpr IntrinsicInfo kIntrinsics[] = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [39] */
|
/* [39] */
|
||||||
/* fn ldexp<T : iu32>(f32, T) -> f32 */
|
/* fn ldexp(f32, i32) -> f32 */
|
||||||
/* fn ldexp<N : num, T : iu32>(vec<N, f32>, vec<N, T>) -> vec<N, f32> */
|
/* fn ldexp<N : num>(vec<N, f32>, vec<N, i32>) -> vec<N, f32> */
|
||||||
/* num overloads */ 2,
|
/* num overloads */ 2,
|
||||||
/* overloads */ &kOverloads[195],
|
/* overloads */ &kOverloads[195],
|
||||||
},
|
},
|
||||||
|
|
|
@ -335,8 +335,8 @@ fn isNan(f32) -> bool
|
||||||
fn isNan<N: num>(vec<N, f32>) -> vec<N, bool>
|
fn isNan<N: num>(vec<N, f32>) -> vec<N, bool>
|
||||||
fn isNormal(f32) -> bool
|
fn isNormal(f32) -> bool
|
||||||
fn isNormal<N: num>(vec<N, f32>) -> vec<N, bool>
|
fn isNormal<N: num>(vec<N, f32>) -> vec<N, bool>
|
||||||
fn ldexp<T: iu32>(f32, T) -> f32
|
fn ldexp(f32, i32) -> f32
|
||||||
fn ldexp<N: num, T: iu32>(vec<N, f32>, vec<N, T>) -> vec<N, f32>
|
fn ldexp<N: num>(vec<N, f32>, vec<N, i32>) -> vec<N, f32>
|
||||||
fn length(f32) -> f32
|
fn length(f32) -> f32
|
||||||
fn length<N: num>(vec<N, f32>) -> f32
|
fn length<N: num>(vec<N, f32>) -> f32
|
||||||
fn log(f32) -> f32
|
fn log(f32) -> f32
|
||||||
|
|
|
@ -102,7 +102,7 @@ ast::CallExpression* GenerateCall(IntrinsicType intrinsic,
|
||||||
case IntrinsicType::kSign:
|
case IntrinsicType::kSign:
|
||||||
return builder->Call(str.str(), "f2");
|
return builder->Call(str.str(), "f2");
|
||||||
case IntrinsicType::kLdexp:
|
case IntrinsicType::kLdexp:
|
||||||
return builder->Call(str.str(), "f2", "u2");
|
return builder->Call(str.str(), "f2", "i2");
|
||||||
case IntrinsicType::kAtan2:
|
case IntrinsicType::kAtan2:
|
||||||
case IntrinsicType::kDot:
|
case IntrinsicType::kDot:
|
||||||
case IntrinsicType::kDistance:
|
case IntrinsicType::kDistance:
|
||||||
|
@ -157,12 +157,13 @@ using HlslIntrinsicTest = TestParamHelper<IntrinsicData>;
|
||||||
TEST_P(HlslIntrinsicTest, Emit) {
|
TEST_P(HlslIntrinsicTest, Emit) {
|
||||||
auto param = GetParam();
|
auto param = GetParam();
|
||||||
|
|
||||||
Global("f2", ty.vec2<float>(), ast::StorageClass::kPrivate);
|
Global("f2", ty.vec2<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("f3", ty.vec3<float>(), ast::StorageClass::kPrivate);
|
Global("f3", ty.vec3<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("u2", ty.vec2<unsigned int>(), ast::StorageClass::kPrivate);
|
Global("u2", ty.vec2<u32>(), ast::StorageClass::kPrivate);
|
||||||
|
Global("i2", ty.vec2<i32>(), ast::StorageClass::kPrivate);
|
||||||
Global("b2", ty.vec2<bool>(), ast::StorageClass::kPrivate);
|
Global("b2", ty.vec2<bool>(), ast::StorageClass::kPrivate);
|
||||||
Global("m2x2", ty.mat2x2<float>(), ast::StorageClass::kPrivate);
|
Global("m2x2", ty.mat2x2<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("m3x2", ty.mat3x2<float>(), ast::StorageClass::kPrivate);
|
Global("m3x2", ty.mat3x2<f32>(), ast::StorageClass::kPrivate);
|
||||||
|
|
||||||
auto* call = GenerateCall(param.intrinsic, param.type, this);
|
auto* call = GenerateCall(param.intrinsic, param.type, this);
|
||||||
ASSERT_NE(nullptr, call) << "Unhandled intrinsic";
|
ASSERT_NE(nullptr, call) << "Unhandled intrinsic";
|
||||||
|
|
|
@ -98,7 +98,7 @@ ast::CallExpression* GenerateCall(IntrinsicType intrinsic,
|
||||||
case IntrinsicType::kSign:
|
case IntrinsicType::kSign:
|
||||||
return builder->Call(str.str(), "f2");
|
return builder->Call(str.str(), "f2");
|
||||||
case IntrinsicType::kLdexp:
|
case IntrinsicType::kLdexp:
|
||||||
return builder->Call(str.str(), "f2", "u2");
|
return builder->Call(str.str(), "f2", "i2");
|
||||||
case IntrinsicType::kAtan2:
|
case IntrinsicType::kAtan2:
|
||||||
case IntrinsicType::kDot:
|
case IntrinsicType::kDot:
|
||||||
case IntrinsicType::kDistance:
|
case IntrinsicType::kDistance:
|
||||||
|
@ -169,14 +169,15 @@ using MslIntrinsicTest = TestParamHelper<IntrinsicData>;
|
||||||
TEST_P(MslIntrinsicTest, Emit) {
|
TEST_P(MslIntrinsicTest, Emit) {
|
||||||
auto param = GetParam();
|
auto param = GetParam();
|
||||||
|
|
||||||
Global("f2", ty.vec2<float>(), ast::StorageClass::kPrivate);
|
Global("f2", ty.vec2<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("f3", ty.vec3<float>(), ast::StorageClass::kPrivate);
|
Global("f3", ty.vec3<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("f4", ty.vec4<float>(), ast::StorageClass::kPrivate);
|
Global("f4", ty.vec4<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("u1", ty.u32(), ast::StorageClass::kPrivate);
|
Global("u1", ty.u32(), ast::StorageClass::kPrivate);
|
||||||
Global("u2", ty.vec2<unsigned int>(), ast::StorageClass::kPrivate);
|
Global("u2", ty.vec2<u32>(), ast::StorageClass::kPrivate);
|
||||||
|
Global("i2", ty.vec2<i32>(), ast::StorageClass::kPrivate);
|
||||||
Global("b2", ty.vec2<bool>(), ast::StorageClass::kPrivate);
|
Global("b2", ty.vec2<bool>(), ast::StorageClass::kPrivate);
|
||||||
Global("m2x2", ty.mat2x2<float>(), ast::StorageClass::kPrivate);
|
Global("m2x2", ty.mat2x2<f32>(), ast::StorageClass::kPrivate);
|
||||||
Global("m3x2", ty.mat3x2<float>(), ast::StorageClass::kPrivate);
|
Global("m3x2", ty.mat3x2<f32>(), ast::StorageClass::kPrivate);
|
||||||
|
|
||||||
auto* call = GenerateCall(param.intrinsic, param.type, this);
|
auto* call = GenerateCall(param.intrinsic, param.type, this);
|
||||||
ASSERT_NE(nullptr, call) << "Unhandled intrinsic";
|
ASSERT_NE(nullptr, call) << "Unhandled intrinsic";
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/intrinsic-gen
|
|
||||||
// using the template:
|
|
||||||
// test/intrinsics/intrinsics.wgsl.tmpl
|
|
||||||
// and the intrinsic defintion file:
|
|
||||||
// src/intrinsics.def
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
// fn ldexp(vec<3, f32>, vec<3, u32>) -> vec<3, f32>
|
|
||||||
fn ldexp_2cb32a() {
|
|
||||||
var res: vec3<f32> = ldexp(vec3<f32>(), vec3<u32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
void ldexp_2cb32a() {
|
|
||||||
float3 res = ldexp(float3(0.0f, 0.0f, 0.0f), uint3(0u, 0u, 0u));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
tint_symbol vertex_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
|
||||||
return tint_symbol_1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
SKIP: FAILED
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Validation Failure:
|
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void ldexp_2cb32a() {
|
|
||||||
float3 res = ldexp(float3(), uint3());
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex void vertex_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tint_UUwNAv.metal:5:18: error: no matching function for call to 'ldexp'
|
|
||||||
float3 res = ldexp(float3(), uint3());
|
|
||||||
^~~~~
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3580:19: note: candidate function not viable: no known conversion from 'uint3' (vector of 3 'unsigned int' values) to 'metal::int3' (aka 'int3') for 2nd argument
|
|
||||||
METAL_FUNC float3 ldexp(float3 x, int3 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2116:17: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'half' for 1st argument
|
|
||||||
METAL_FUNC half ldexp(half x, int k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2360:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
|
|
||||||
METAL_FUNC half2 ldexp(half2 x, int2 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2604:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
|
|
||||||
METAL_FUNC half3 ldexp(half3 x, int3 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2848:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
|
|
||||||
METAL_FUNC half4 ldexp(half4 x, int4 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3092:18: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'float' for 1st argument
|
|
||||||
METAL_FUNC float ldexp(float x, int k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3336:19: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::float2' (aka 'float2') for 1st argument
|
|
||||||
METAL_FUNC float2 ldexp(float2 x, int2 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3824:19: note: candidate function not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'metal::float4' (aka 'float4') for 1st argument
|
|
||||||
METAL_FUNC float4 ldexp(float4 x, int4 k)
|
|
||||||
^
|
|
||||||
1 error generated.
|
|
|
@ -1,72 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 37
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
%15 = OpExtInstImport "GLSL.std.450"
|
|
||||||
OpMemoryModel Logical GLSL450
|
|
||||||
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
|
|
||||||
OpEntryPoint Fragment %fragment_main "fragment_main"
|
|
||||||
OpEntryPoint GLCompute %compute_main "compute_main"
|
|
||||||
OpExecutionMode %fragment_main OriginUpperLeft
|
|
||||||
OpExecutionMode %compute_main LocalSize 1 1 1
|
|
||||||
OpName %tint_pointsize "tint_pointsize"
|
|
||||||
OpName %tint_symbol_1 "tint_symbol_1"
|
|
||||||
OpName %ldexp_2cb32a "ldexp_2cb32a"
|
|
||||||
OpName %res "res"
|
|
||||||
OpName %tint_symbol_2 "tint_symbol_2"
|
|
||||||
OpName %tint_symbol "tint_symbol"
|
|
||||||
OpName %vertex_main "vertex_main"
|
|
||||||
OpName %fragment_main "fragment_main"
|
|
||||||
OpName %compute_main "compute_main"
|
|
||||||
OpDecorate %tint_pointsize BuiltIn PointSize
|
|
||||||
OpDecorate %tint_symbol_1 BuiltIn Position
|
|
||||||
%float = OpTypeFloat 32
|
|
||||||
%_ptr_Output_float = OpTypePointer Output %float
|
|
||||||
%4 = OpConstantNull %float
|
|
||||||
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
|
||||||
%v4float = OpTypeVector %float 4
|
|
||||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
||||||
%8 = OpConstantNull %v4float
|
|
||||||
%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%9 = OpTypeFunction %void
|
|
||||||
%v3float = OpTypeVector %float 3
|
|
||||||
%16 = OpConstantNull %v3float
|
|
||||||
%uint = OpTypeInt 32 0
|
|
||||||
%v3uint = OpTypeVector %uint 3
|
|
||||||
%19 = OpConstantNull %v3uint
|
|
||||||
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
|
||||||
%22 = OpTypeFunction %void %v4float
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%ldexp_2cb32a = OpFunction %void None %9
|
|
||||||
%12 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_v3float Function %16
|
|
||||||
%13 = OpExtInst %v3float %15 Ldexp %16 %19
|
|
||||||
OpStore %res %13
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%tint_symbol_2 = OpFunction %void None %22
|
|
||||||
%tint_symbol = OpFunctionParameter %v4float
|
|
||||||
%25 = OpLabel
|
|
||||||
OpStore %tint_symbol_1 %tint_symbol
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %9
|
|
||||||
%27 = OpLabel
|
|
||||||
OpStore %tint_pointsize %float_1
|
|
||||||
%29 = OpFunctionCall %void %ldexp_2cb32a
|
|
||||||
%30 = OpFunctionCall %void %tint_symbol_2 %8
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %9
|
|
||||||
%32 = OpLabel
|
|
||||||
%33 = OpFunctionCall %void %ldexp_2cb32a
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %9
|
|
||||||
%35 = OpLabel
|
|
||||||
%36 = OpFunctionCall %void %ldexp_2cb32a
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,19 +0,0 @@
|
||||||
fn ldexp_2cb32a() {
|
|
||||||
var res : vec3<f32> = ldexp(vec3<f32>(), vec3<u32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_2cb32a();
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/intrinsic-gen
|
|
||||||
// using the template:
|
|
||||||
// test/intrinsics/intrinsics.wgsl.tmpl
|
|
||||||
// and the intrinsic defintion file:
|
|
||||||
// src/intrinsics.def
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
// fn ldexp(vec<4, f32>, vec<4, u32>) -> vec<4, f32>
|
|
||||||
fn ldexp_4d6f6d() {
|
|
||||||
var res: vec4<f32> = ldexp(vec4<f32>(), vec4<u32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
void ldexp_4d6f6d() {
|
|
||||||
float4 res = ldexp(float4(0.0f, 0.0f, 0.0f, 0.0f), uint4(0u, 0u, 0u, 0u));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
tint_symbol vertex_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
|
||||||
return tint_symbol_1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
SKIP: FAILED
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Validation Failure:
|
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void ldexp_4d6f6d() {
|
|
||||||
float4 res = ldexp(float4(), uint4());
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex void vertex_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tint_51Pgfs.metal:5:18: error: no matching function for call to 'ldexp'
|
|
||||||
float4 res = ldexp(float4(), uint4());
|
|
||||||
^~~~~
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3824:19: note: candidate function not viable: no known conversion from 'uint4' (vector of 4 'unsigned int' values) to 'metal::int4' (aka 'int4') for 2nd argument
|
|
||||||
METAL_FUNC float4 ldexp(float4 x, int4 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2116:17: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'half' for 1st argument
|
|
||||||
METAL_FUNC half ldexp(half x, int k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2360:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
|
|
||||||
METAL_FUNC half2 ldexp(half2 x, int2 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2604:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
|
|
||||||
METAL_FUNC half3 ldexp(half3 x, int3 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2848:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
|
|
||||||
METAL_FUNC half4 ldexp(half4 x, int4 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3092:18: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float' for 1st argument
|
|
||||||
METAL_FUNC float ldexp(float x, int k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3336:19: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::float2' (aka 'float2') for 1st argument
|
|
||||||
METAL_FUNC float2 ldexp(float2 x, int2 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3580:19: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'metal::float3' (aka 'float3') for 1st argument
|
|
||||||
METAL_FUNC float3 ldexp(float3 x, int3 k)
|
|
||||||
^
|
|
||||||
1 error generated.
|
|
|
@ -1,70 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 35
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
%14 = OpExtInstImport "GLSL.std.450"
|
|
||||||
OpMemoryModel Logical GLSL450
|
|
||||||
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
|
|
||||||
OpEntryPoint Fragment %fragment_main "fragment_main"
|
|
||||||
OpEntryPoint GLCompute %compute_main "compute_main"
|
|
||||||
OpExecutionMode %fragment_main OriginUpperLeft
|
|
||||||
OpExecutionMode %compute_main LocalSize 1 1 1
|
|
||||||
OpName %tint_pointsize "tint_pointsize"
|
|
||||||
OpName %tint_symbol_1 "tint_symbol_1"
|
|
||||||
OpName %ldexp_4d6f6d "ldexp_4d6f6d"
|
|
||||||
OpName %res "res"
|
|
||||||
OpName %tint_symbol_2 "tint_symbol_2"
|
|
||||||
OpName %tint_symbol "tint_symbol"
|
|
||||||
OpName %vertex_main "vertex_main"
|
|
||||||
OpName %fragment_main "fragment_main"
|
|
||||||
OpName %compute_main "compute_main"
|
|
||||||
OpDecorate %tint_pointsize BuiltIn PointSize
|
|
||||||
OpDecorate %tint_symbol_1 BuiltIn Position
|
|
||||||
%float = OpTypeFloat 32
|
|
||||||
%_ptr_Output_float = OpTypePointer Output %float
|
|
||||||
%4 = OpConstantNull %float
|
|
||||||
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
|
||||||
%v4float = OpTypeVector %float 4
|
|
||||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
||||||
%8 = OpConstantNull %v4float
|
|
||||||
%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%9 = OpTypeFunction %void
|
|
||||||
%uint = OpTypeInt 32 0
|
|
||||||
%v4uint = OpTypeVector %uint 4
|
|
||||||
%17 = OpConstantNull %v4uint
|
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
||||||
%20 = OpTypeFunction %void %v4float
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%ldexp_4d6f6d = OpFunction %void None %9
|
|
||||||
%12 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_v4float Function %8
|
|
||||||
%13 = OpExtInst %v4float %14 Ldexp %8 %17
|
|
||||||
OpStore %res %13
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%tint_symbol_2 = OpFunction %void None %20
|
|
||||||
%tint_symbol = OpFunctionParameter %v4float
|
|
||||||
%23 = OpLabel
|
|
||||||
OpStore %tint_symbol_1 %tint_symbol
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %9
|
|
||||||
%25 = OpLabel
|
|
||||||
OpStore %tint_pointsize %float_1
|
|
||||||
%27 = OpFunctionCall %void %ldexp_4d6f6d
|
|
||||||
%28 = OpFunctionCall %void %tint_symbol_2 %8
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %9
|
|
||||||
%30 = OpLabel
|
|
||||||
%31 = OpFunctionCall %void %ldexp_4d6f6d
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %9
|
|
||||||
%33 = OpLabel
|
|
||||||
%34 = OpFunctionCall %void %ldexp_4d6f6d
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,19 +0,0 @@
|
||||||
fn ldexp_4d6f6d() {
|
|
||||||
var res : vec4<f32> = ldexp(vec4<f32>(), vec4<u32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_4d6f6d();
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/intrinsic-gen
|
|
||||||
// using the template:
|
|
||||||
// test/intrinsics/intrinsics.wgsl.tmpl
|
|
||||||
// and the intrinsic defintion file:
|
|
||||||
// src/intrinsics.def
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
// fn ldexp(vec<2, f32>, vec<2, u32>) -> vec<2, f32>
|
|
||||||
fn ldexp_7bc2fd() {
|
|
||||||
var res: vec2<f32> = ldexp(vec2<f32>(), vec2<u32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
void ldexp_7bc2fd() {
|
|
||||||
float2 res = ldexp(float2(0.0f, 0.0f), uint2(0u, 0u));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
tint_symbol vertex_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
|
||||||
return tint_symbol_1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
SKIP: FAILED
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Validation Failure:
|
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void ldexp_7bc2fd() {
|
|
||||||
float2 res = ldexp(float2(), uint2());
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex void vertex_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tint_aJWI1V.metal:5:18: error: no matching function for call to 'ldexp'
|
|
||||||
float2 res = ldexp(float2(), uint2());
|
|
||||||
^~~~~
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3336:19: note: candidate function not viable: no known conversion from 'uint2' (vector of 2 'unsigned int' values) to 'metal::int2' (aka 'int2') for 2nd argument
|
|
||||||
METAL_FUNC float2 ldexp(float2 x, int2 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2116:17: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'half' for 1st argument
|
|
||||||
METAL_FUNC half ldexp(half x, int k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2360:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half2' (aka 'half2') for 1st argument
|
|
||||||
METAL_FUNC half2 ldexp(half2 x, int2 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2604:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half3' (aka 'half3') for 1st argument
|
|
||||||
METAL_FUNC half3 ldexp(half3 x, int3 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:2848:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::half4' (aka 'half4') for 1st argument
|
|
||||||
METAL_FUNC half4 ldexp(half4 x, int4 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3092:18: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'float' for 1st argument
|
|
||||||
METAL_FUNC float ldexp(float x, int k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3580:19: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::float3' (aka 'float3') for 1st argument
|
|
||||||
METAL_FUNC float3 ldexp(float3 x, int3 k)
|
|
||||||
^
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/lib/clang/902.14/include/metal/metal_math:3824:19: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'metal::float4' (aka 'float4') for 1st argument
|
|
||||||
METAL_FUNC float4 ldexp(float4 x, int4 k)
|
|
||||||
^
|
|
||||||
1 error generated.
|
|
|
@ -1,72 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 37
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
%15 = OpExtInstImport "GLSL.std.450"
|
|
||||||
OpMemoryModel Logical GLSL450
|
|
||||||
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
|
|
||||||
OpEntryPoint Fragment %fragment_main "fragment_main"
|
|
||||||
OpEntryPoint GLCompute %compute_main "compute_main"
|
|
||||||
OpExecutionMode %fragment_main OriginUpperLeft
|
|
||||||
OpExecutionMode %compute_main LocalSize 1 1 1
|
|
||||||
OpName %tint_pointsize "tint_pointsize"
|
|
||||||
OpName %tint_symbol_1 "tint_symbol_1"
|
|
||||||
OpName %ldexp_7bc2fd "ldexp_7bc2fd"
|
|
||||||
OpName %res "res"
|
|
||||||
OpName %tint_symbol_2 "tint_symbol_2"
|
|
||||||
OpName %tint_symbol "tint_symbol"
|
|
||||||
OpName %vertex_main "vertex_main"
|
|
||||||
OpName %fragment_main "fragment_main"
|
|
||||||
OpName %compute_main "compute_main"
|
|
||||||
OpDecorate %tint_pointsize BuiltIn PointSize
|
|
||||||
OpDecorate %tint_symbol_1 BuiltIn Position
|
|
||||||
%float = OpTypeFloat 32
|
|
||||||
%_ptr_Output_float = OpTypePointer Output %float
|
|
||||||
%4 = OpConstantNull %float
|
|
||||||
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
|
||||||
%v4float = OpTypeVector %float 4
|
|
||||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
||||||
%8 = OpConstantNull %v4float
|
|
||||||
%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%9 = OpTypeFunction %void
|
|
||||||
%v2float = OpTypeVector %float 2
|
|
||||||
%16 = OpConstantNull %v2float
|
|
||||||
%uint = OpTypeInt 32 0
|
|
||||||
%v2uint = OpTypeVector %uint 2
|
|
||||||
%19 = OpConstantNull %v2uint
|
|
||||||
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
||||||
%22 = OpTypeFunction %void %v4float
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%ldexp_7bc2fd = OpFunction %void None %9
|
|
||||||
%12 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_v2float Function %16
|
|
||||||
%13 = OpExtInst %v2float %15 Ldexp %16 %19
|
|
||||||
OpStore %res %13
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%tint_symbol_2 = OpFunction %void None %22
|
|
||||||
%tint_symbol = OpFunctionParameter %v4float
|
|
||||||
%25 = OpLabel
|
|
||||||
OpStore %tint_symbol_1 %tint_symbol
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %9
|
|
||||||
%27 = OpLabel
|
|
||||||
OpStore %tint_pointsize %float_1
|
|
||||||
%29 = OpFunctionCall %void %ldexp_7bc2fd
|
|
||||||
%30 = OpFunctionCall %void %tint_symbol_2 %8
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %9
|
|
||||||
%32 = OpLabel
|
|
||||||
%33 = OpFunctionCall %void %ldexp_7bc2fd
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %9
|
|
||||||
%35 = OpLabel
|
|
||||||
%36 = OpFunctionCall %void %ldexp_7bc2fd
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,19 +0,0 @@
|
||||||
fn ldexp_7bc2fd() {
|
|
||||||
var res : vec2<f32> = ldexp(vec2<f32>(), vec2<u32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_7bc2fd();
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/intrinsic-gen
|
|
||||||
// using the template:
|
|
||||||
// test/intrinsics/intrinsics.wgsl.tmpl
|
|
||||||
// and the intrinsic defintion file:
|
|
||||||
// src/intrinsics.def
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
// fn ldexp(f32, u32) -> f32
|
|
||||||
fn ldexp_f54ff2() {
|
|
||||||
var res: f32 = ldexp(1.0, 1u);
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
void ldexp_f54ff2() {
|
|
||||||
float res = ldexp(1.0f, 1u);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
tint_symbol vertex_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
|
|
||||||
return tint_symbol_1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value [[position]];
|
|
||||||
};
|
|
||||||
|
|
||||||
void ldexp_f54ff2() {
|
|
||||||
float res = ldexp(1.0f, 1u);
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex tint_symbol vertex_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
tint_symbol const tint_symbol_1 = {.value=float4()};
|
|
||||||
return tint_symbol_1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 34
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
%14 = OpExtInstImport "GLSL.std.450"
|
|
||||||
OpMemoryModel Logical GLSL450
|
|
||||||
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1
|
|
||||||
OpEntryPoint Fragment %fragment_main "fragment_main"
|
|
||||||
OpEntryPoint GLCompute %compute_main "compute_main"
|
|
||||||
OpExecutionMode %fragment_main OriginUpperLeft
|
|
||||||
OpExecutionMode %compute_main LocalSize 1 1 1
|
|
||||||
OpName %tint_pointsize "tint_pointsize"
|
|
||||||
OpName %tint_symbol_1 "tint_symbol_1"
|
|
||||||
OpName %ldexp_f54ff2 "ldexp_f54ff2"
|
|
||||||
OpName %res "res"
|
|
||||||
OpName %tint_symbol_2 "tint_symbol_2"
|
|
||||||
OpName %tint_symbol "tint_symbol"
|
|
||||||
OpName %vertex_main "vertex_main"
|
|
||||||
OpName %fragment_main "fragment_main"
|
|
||||||
OpName %compute_main "compute_main"
|
|
||||||
OpDecorate %tint_pointsize BuiltIn PointSize
|
|
||||||
OpDecorate %tint_symbol_1 BuiltIn Position
|
|
||||||
%float = OpTypeFloat 32
|
|
||||||
%_ptr_Output_float = OpTypePointer Output %float
|
|
||||||
%4 = OpConstantNull %float
|
|
||||||
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
|
||||||
%v4float = OpTypeVector %float 4
|
|
||||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
||||||
%8 = OpConstantNull %v4float
|
|
||||||
%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%9 = OpTypeFunction %void
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%uint = OpTypeInt 32 0
|
|
||||||
%uint_1 = OpConstant %uint 1
|
|
||||||
%_ptr_Function_float = OpTypePointer Function %float
|
|
||||||
%20 = OpTypeFunction %void %v4float
|
|
||||||
%ldexp_f54ff2 = OpFunction %void None %9
|
|
||||||
%12 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_float Function %4
|
|
||||||
%13 = OpExtInst %float %14 Ldexp %float_1 %uint_1
|
|
||||||
OpStore %res %13
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%tint_symbol_2 = OpFunction %void None %20
|
|
||||||
%tint_symbol = OpFunctionParameter %v4float
|
|
||||||
%23 = OpLabel
|
|
||||||
OpStore %tint_symbol_1 %tint_symbol
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %9
|
|
||||||
%25 = OpLabel
|
|
||||||
OpStore %tint_pointsize %float_1
|
|
||||||
%26 = OpFunctionCall %void %ldexp_f54ff2
|
|
||||||
%27 = OpFunctionCall %void %tint_symbol_2 %8
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %9
|
|
||||||
%29 = OpLabel
|
|
||||||
%30 = OpFunctionCall %void %ldexp_f54ff2
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %9
|
|
||||||
%32 = OpLabel
|
|
||||||
%33 = OpFunctionCall %void %ldexp_f54ff2
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,19 +0,0 @@
|
||||||
fn ldexp_f54ff2() {
|
|
||||||
var res : f32 = ldexp(1.0, 1u);
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(vertex)]]
|
|
||||||
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(fragment)]]
|
|
||||||
fn fragment_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
}
|
|
||||||
|
|
||||||
[[stage(compute), workgroup_size(1)]]
|
|
||||||
fn compute_main() {
|
|
||||||
ldexp_f54ff2();
|
|
||||||
}
|
|
Loading…
Reference in New Issue