intrinsics: Limit fwidth builtins to fragment shaders

This fixes the SPIR-V and MSL tests for these intrinsics.

Change-Id: Id6f48682285ff17cb1fa7ef618f34b02f553332b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55681
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
James Price 2021-06-22 20:19:49 +00:00 committed by Tint LUCI CQ
parent f37f8df38b
commit e0cc771e0a
62 changed files with 156 additions and 1326 deletions

View File

@ -6807,7 +6807,7 @@ constexpr OverloadInfo kOverloads[] = {
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[564],
/* return matcher indices */ &kMatcherIndices[7],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@ -6819,7 +6819,7 @@ constexpr OverloadInfo kOverloads[] = {
/* open numbers */ &kOpenNumbers[1],
/* parameters */ &kParameters[563],
/* return matcher indices */ &kMatcherIndices[10],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@ -6831,7 +6831,7 @@ constexpr OverloadInfo kOverloads[] = {
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[562],
/* return matcher indices */ &kMatcherIndices[7],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@ -6843,7 +6843,7 @@ constexpr OverloadInfo kOverloads[] = {
/* open numbers */ &kOpenNumbers[1],
/* parameters */ &kParameters[561],
/* return matcher indices */ &kMatcherIndices[10],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@ -6855,7 +6855,7 @@ constexpr OverloadInfo kOverloads[] = {
/* open numbers */ &kOpenNumbers[7],
/* parameters */ &kParameters[560],
/* return matcher indices */ &kMatcherIndices[7],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{
@ -6867,7 +6867,7 @@ constexpr OverloadInfo kOverloads[] = {
/* open numbers */ &kOpenNumbers[1],
/* parameters */ &kParameters[559],
/* return matcher indices */ &kMatcherIndices[10],
/* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
/* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
/* is_deprecated */ false,
},
{

View File

@ -311,12 +311,12 @@ fn fract(f32) -> f32
fn fract<N: num>(vec<N, f32>) -> vec<N, f32>
fn frexp<T: iu32, S: function_private_workgroup, A: access>(f32, ptr<S, T, A>) -> f32
fn frexp<N: num, T: iu32, S: function_private_workgroup, A: access>(vec<N, f32>, ptr<S, vec<N, T>, A>) -> vec<N, f32>
fn fwidth(f32) -> f32
fn fwidth<N: num>(vec<N, f32>) -> vec<N, f32>
fn fwidthCoarse(f32) -> f32
fn fwidthCoarse<N: num>(vec<N, f32>) -> vec<N, f32>
fn fwidthFine(f32) -> f32
fn fwidthFine<N: num>(vec<N, f32>) -> vec<N, f32>
[[stage("fragment")]] fn fwidth(f32) -> f32
[[stage("fragment")]] fn fwidth<N: num>(vec<N, f32>) -> vec<N, f32>
[[stage("fragment")]] fn fwidthCoarse(f32) -> f32
[[stage("fragment")]] fn fwidthCoarse<N: num>(vec<N, f32>) -> vec<N, f32>
[[stage("fragment")]] fn fwidthFine(f32) -> f32
[[stage("fragment")]] fn fwidthFine<N: num>(vec<N, f32>) -> vec<N, f32>
fn ignore<T>(T)
fn inverseSqrt(f32) -> f32
fn inverseSqrt<N: num>(vec<N, f32>) -> vec<N, f32>

View File

@ -28,18 +28,7 @@ fn fwidth_5d1b39() {
var res: vec3<f32> = fwidth(vec3<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_5d1b39();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_5d1b39();
}
[[stage(compute)]]
fn compute_main() {
fwidth_5d1b39();
}

View File

@ -2,23 +2,7 @@ void fwidth_5d1b39() {
float3 res = fwidth(float3(0.0f, 0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidth_5d1b39();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidth_5d1b39();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidth_5d1b39();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidth_5d1b39() {
float3 res = fwidth(float3());
}
vertex void vertex_main() {
fwidth_5d1b39();
return;
}
fragment void fragment_main() {
fwidth_5d1b39();
return;
}
kernel void compute_main() {
fwidth_5d1b39();
return;
}
tint_6o3PFV.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float3 res = fwidth(float3());
^
tint_6o3PFV.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v3f32 is not allowed within a vertex function
tint_6o3PFV.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v3f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,62 +1,30 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidth_5d1b39 "fwidth_5d1b39"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%11 = OpConstantNull %v3float
%8 = OpConstantNull %v3float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%float_1 = OpConstant %float 1
%fwidth_5d1b39 = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v3float Function %11
%9 = OpFwidth %v3float %11
OpStore %res %9
%fwidth_5d1b39 = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v3float Function %8
%5 = OpFwidth %v3float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidth_5d1b39
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidth_5d1b39
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidth_5d1b39
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidth_5d1b39
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidth_5d1b39], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: Fwidth
%fwidth_5d1b39 = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidth_5d1b39() {
var res : vec3<f32> = fwidth(vec3<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_5d1b39();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_5d1b39();
}
[[stage(compute)]]
fn compute_main() {
fwidth_5d1b39();
}

View File

@ -28,18 +28,7 @@ fn fwidth_b83ebb() {
var res: vec2<f32> = fwidth(vec2<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_b83ebb();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_b83ebb();
}
[[stage(compute)]]
fn compute_main() {
fwidth_b83ebb();
}

View File

@ -2,23 +2,7 @@ void fwidth_b83ebb() {
float2 res = fwidth(float2(0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidth_b83ebb();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidth_b83ebb();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidth_b83ebb();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidth_b83ebb() {
float2 res = fwidth(float2());
}
vertex void vertex_main() {
fwidth_b83ebb();
return;
}
fragment void fragment_main() {
fwidth_b83ebb();
return;
}
kernel void compute_main() {
fwidth_b83ebb();
return;
}
tint_STFkVK.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float2 res = fwidth(float2());
^
tint_STFkVK.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v2f32 is not allowed within a vertex function
tint_STFkVK.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v2f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,62 +1,30 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidth_b83ebb "fwidth_b83ebb"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%11 = OpConstantNull %v2float
%8 = OpConstantNull %v2float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%float_1 = OpConstant %float 1
%fwidth_b83ebb = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v2float Function %11
%9 = OpFwidth %v2float %11
OpStore %res %9
%fwidth_b83ebb = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v2float Function %8
%5 = OpFwidth %v2float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidth_b83ebb
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidth_b83ebb
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidth_b83ebb
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidth_b83ebb
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidth_b83ebb], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: Fwidth
%fwidth_b83ebb = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidth_b83ebb() {
var res : vec2<f32> = fwidth(vec2<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_b83ebb();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_b83ebb();
}
[[stage(compute)]]
fn compute_main() {
fwidth_b83ebb();
}

View File

@ -28,18 +28,7 @@ fn fwidth_d2ab9a() {
var res: vec4<f32> = fwidth(vec4<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_d2ab9a();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_d2ab9a();
}
[[stage(compute)]]
fn compute_main() {
fwidth_d2ab9a();
}

View File

@ -2,23 +2,7 @@ void fwidth_d2ab9a() {
float4 res = fwidth(float4(0.0f, 0.0f, 0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidth_d2ab9a();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidth_d2ab9a();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidth_d2ab9a();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidth_d2ab9a() {
float4 res = fwidth(float4());
}
vertex void vertex_main() {
fwidth_d2ab9a();
return;
}
fragment void fragment_main() {
fwidth_d2ab9a();
return;
}
kernel void compute_main() {
fwidth_d2ab9a();
return;
}
tint_BZ4hJz.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float4 res = fwidth(float4());
^
tint_BZ4hJz.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v4f32 is not allowed within a vertex function
tint_BZ4hJz.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v4f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,62 +1,30 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidth_d2ab9a "fwidth_d2ab9a"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%11 = OpConstantNull %v4float
%8 = OpConstantNull %v4float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_1 = OpConstant %float 1
%fwidth_d2ab9a = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %11
%9 = OpFwidth %v4float %11
OpStore %res %9
%fwidth_d2ab9a = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %8
%5 = OpFwidth %v4float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidth_d2ab9a
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidth_d2ab9a
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidth_d2ab9a
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidth_d2ab9a
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidth_d2ab9a], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: Fwidth
%fwidth_d2ab9a = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidth_d2ab9a() {
var res : vec4<f32> = fwidth(vec4<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_d2ab9a();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_d2ab9a();
}
[[stage(compute)]]
fn compute_main() {
fwidth_d2ab9a();
}

View File

@ -28,18 +28,7 @@ fn fwidth_df38ef() {
var res: f32 = fwidth(1.0);
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_df38ef();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_df38ef();
}
[[stage(compute)]]
fn compute_main() {
fwidth_df38ef();
}

View File

@ -2,23 +2,7 @@ void fwidth_df38ef() {
float res = fwidth(1.0f);
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidth_df38ef();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidth_df38ef();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidth_df38ef();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidth_df38ef() {
float res = fwidth(1.0f);
}
vertex void vertex_main() {
fwidth_df38ef();
return;
}
fragment void fragment_main() {
fwidth_df38ef();
return;
}
kernel void compute_main() {
fwidth_df38ef();
return;
}
tint_YeBAYS.metal:5:9: warning: unused variable 'res' [-Wunused-variable]
float res = fwidth(1.0f);
^
tint_YeBAYS.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.f32 is not allowed within a vertex function
tint_YeBAYS.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,60 +1,30 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 22
; Bound: 14
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidth_df38ef "fwidth_df38ef"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%float_1 = OpConstant %float 1
%_ptr_Function_float = OpTypePointer Function %float
%fwidth_df38ef = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_float Function %4
%9 = OpFwidth %float %float_1
OpStore %res %9
%10 = OpConstantNull %float
%fwidth_df38ef = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_float Function %10
%5 = OpFwidth %float %float_1
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%14 = OpLabel
OpStore %tint_pointsize %float_1
%15 = OpFunctionCall %void %fwidth_df38ef
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidth_df38ef
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%17 = OpLabel
%18 = OpFunctionCall %void %fwidth_df38ef
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%20 = OpLabel
%21 = OpFunctionCall %void %fwidth_df38ef
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '13[%vertex_main]'s callgraph contains function <id> 7[%fwidth_df38ef], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: Fwidth
%fwidth_df38ef = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidth_df38ef() {
var res : f32 = fwidth(1.0);
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidth_df38ef();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidth_df38ef();
}
[[stage(compute)]]
fn compute_main() {
fwidth_df38ef();
}

View File

@ -28,18 +28,7 @@ fn fwidthCoarse_159c8a() {
var res: f32 = fwidthCoarse(1.0);
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_159c8a();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_159c8a();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_159c8a();
}

View File

@ -2,23 +2,7 @@ void fwidthCoarse_159c8a() {
float res = fwidth(1.0f);
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthCoarse_159c8a();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthCoarse_159c8a();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthCoarse_159c8a();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthCoarse_159c8a() {
float res = fwidth(1.0f);
}
vertex void vertex_main() {
fwidthCoarse_159c8a();
return;
}
fragment void fragment_main() {
fwidthCoarse_159c8a();
return;
}
kernel void compute_main() {
fwidthCoarse_159c8a();
return;
}
tint_IJRHv8.metal:5:9: warning: unused variable 'res' [-Wunused-variable]
float res = fwidth(1.0f);
^
tint_IJRHv8.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.f32 is not allowed within a vertex function
tint_IJRHv8.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,61 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 22
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthCoarse_159c8a "fwidthCoarse_159c8a"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%float_1 = OpConstant %float 1
%_ptr_Function_float = OpTypePointer Function %float
%fwidthCoarse_159c8a = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_float Function %4
%9 = OpFwidthCoarse %float %float_1
OpStore %res %9
%10 = OpConstantNull %float
%fwidthCoarse_159c8a = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_float Function %10
%5 = OpFwidthCoarse %float %float_1
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%14 = OpLabel
OpStore %tint_pointsize %float_1
%15 = OpFunctionCall %void %fwidthCoarse_159c8a
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthCoarse_159c8a
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%17 = OpLabel
%18 = OpFunctionCall %void %fwidthCoarse_159c8a
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%20 = OpLabel
%21 = OpFunctionCall %void %fwidthCoarse_159c8a
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '13[%vertex_main]'s callgraph contains function <id> 7[%fwidthCoarse_159c8a], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthCoarse
%fwidthCoarse_159c8a = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthCoarse_159c8a() {
var res : f32 = fwidthCoarse(1.0);
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_159c8a();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_159c8a();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_159c8a();
}

View File

@ -28,18 +28,7 @@ fn fwidthCoarse_1e59d9() {
var res: vec3<f32> = fwidthCoarse(vec3<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_1e59d9();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_1e59d9();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_1e59d9();
}

View File

@ -2,23 +2,7 @@ void fwidthCoarse_1e59d9() {
float3 res = fwidth(float3(0.0f, 0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthCoarse_1e59d9();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthCoarse_1e59d9();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthCoarse_1e59d9();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthCoarse_1e59d9() {
float3 res = fwidth(float3());
}
vertex void vertex_main() {
fwidthCoarse_1e59d9();
return;
}
fragment void fragment_main() {
fwidthCoarse_1e59d9();
return;
}
kernel void compute_main() {
fwidthCoarse_1e59d9();
return;
}
tint_nMosr7.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float3 res = fwidth(float3());
^
tint_nMosr7.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v3f32 is not allowed within a vertex function
tint_nMosr7.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v3f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,63 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthCoarse_1e59d9 "fwidthCoarse_1e59d9"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%11 = OpConstantNull %v3float
%8 = OpConstantNull %v3float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%float_1 = OpConstant %float 1
%fwidthCoarse_1e59d9 = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v3float Function %11
%9 = OpFwidthCoarse %v3float %11
OpStore %res %9
%fwidthCoarse_1e59d9 = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v3float Function %8
%5 = OpFwidthCoarse %v3float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidthCoarse_1e59d9
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthCoarse_1e59d9
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidthCoarse_1e59d9
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidthCoarse_1e59d9
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidthCoarse_1e59d9], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthCoarse
%fwidthCoarse_1e59d9 = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthCoarse_1e59d9() {
var res : vec3<f32> = fwidthCoarse(vec3<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_1e59d9();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_1e59d9();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_1e59d9();
}

View File

@ -28,18 +28,7 @@ fn fwidthCoarse_4e4fc4() {
var res: vec4<f32> = fwidthCoarse(vec4<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_4e4fc4();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_4e4fc4();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_4e4fc4();
}

View File

@ -2,23 +2,7 @@ void fwidthCoarse_4e4fc4() {
float4 res = fwidth(float4(0.0f, 0.0f, 0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthCoarse_4e4fc4();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthCoarse_4e4fc4();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthCoarse_4e4fc4();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthCoarse_4e4fc4() {
float4 res = fwidth(float4());
}
vertex void vertex_main() {
fwidthCoarse_4e4fc4();
return;
}
fragment void fragment_main() {
fwidthCoarse_4e4fc4();
return;
}
kernel void compute_main() {
fwidthCoarse_4e4fc4();
return;
}
tint_Rs09zG.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float4 res = fwidth(float4());
^
tint_Rs09zG.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v4f32 is not allowed within a vertex function
tint_Rs09zG.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v4f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,63 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthCoarse_4e4fc4 "fwidthCoarse_4e4fc4"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%11 = OpConstantNull %v4float
%8 = OpConstantNull %v4float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_1 = OpConstant %float 1
%fwidthCoarse_4e4fc4 = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %11
%9 = OpFwidthCoarse %v4float %11
OpStore %res %9
%fwidthCoarse_4e4fc4 = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %8
%5 = OpFwidthCoarse %v4float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidthCoarse_4e4fc4
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthCoarse_4e4fc4
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidthCoarse_4e4fc4
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidthCoarse_4e4fc4
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidthCoarse_4e4fc4], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthCoarse
%fwidthCoarse_4e4fc4 = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthCoarse_4e4fc4() {
var res : vec4<f32> = fwidthCoarse(vec4<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_4e4fc4();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_4e4fc4();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_4e4fc4();
}

View File

@ -28,18 +28,7 @@ fn fwidthCoarse_e653f7() {
var res: vec2<f32> = fwidthCoarse(vec2<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_e653f7();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_e653f7();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_e653f7();
}

View File

@ -2,23 +2,7 @@ void fwidthCoarse_e653f7() {
float2 res = fwidth(float2(0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthCoarse_e653f7();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthCoarse_e653f7();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthCoarse_e653f7();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthCoarse_e653f7() {
float2 res = fwidth(float2());
}
vertex void vertex_main() {
fwidthCoarse_e653f7();
return;
}
fragment void fragment_main() {
fwidthCoarse_e653f7();
return;
}
kernel void compute_main() {
fwidthCoarse_e653f7();
return;
}
tint_YU6pTb.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float2 res = fwidth(float2());
^
tint_YU6pTb.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v2f32 is not allowed within a vertex function
tint_YU6pTb.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v2f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,63 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthCoarse_e653f7 "fwidthCoarse_e653f7"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%11 = OpConstantNull %v2float
%8 = OpConstantNull %v2float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%float_1 = OpConstant %float 1
%fwidthCoarse_e653f7 = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v2float Function %11
%9 = OpFwidthCoarse %v2float %11
OpStore %res %9
%fwidthCoarse_e653f7 = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v2float Function %8
%5 = OpFwidthCoarse %v2float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidthCoarse_e653f7
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthCoarse_e653f7
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidthCoarse_e653f7
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidthCoarse_e653f7
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidthCoarse_e653f7], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthCoarse
%fwidthCoarse_e653f7 = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthCoarse_e653f7() {
var res : vec2<f32> = fwidthCoarse(vec2<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthCoarse_e653f7();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthCoarse_e653f7();
}
[[stage(compute)]]
fn compute_main() {
fwidthCoarse_e653f7();
}

View File

@ -28,18 +28,7 @@ fn fwidthFine_523fdc() {
var res: vec3<f32> = fwidthFine(vec3<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_523fdc();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_523fdc();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_523fdc();
}

View File

@ -2,23 +2,7 @@ void fwidthFine_523fdc() {
float3 res = fwidth(float3(0.0f, 0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthFine_523fdc();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthFine_523fdc();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthFine_523fdc();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthFine_523fdc() {
float3 res = fwidth(float3());
}
vertex void vertex_main() {
fwidthFine_523fdc();
return;
}
fragment void fragment_main() {
fwidthFine_523fdc();
return;
}
kernel void compute_main() {
fwidthFine_523fdc();
return;
}
tint_T9vWZ8.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float3 res = fwidth(float3());
^
tint_T9vWZ8.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v3f32 is not allowed within a vertex function
tint_T9vWZ8.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v3f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,63 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthFine_523fdc "fwidthFine_523fdc"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%11 = OpConstantNull %v3float
%8 = OpConstantNull %v3float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%float_1 = OpConstant %float 1
%fwidthFine_523fdc = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v3float Function %11
%9 = OpFwidthFine %v3float %11
OpStore %res %9
%fwidthFine_523fdc = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v3float Function %8
%5 = OpFwidthFine %v3float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidthFine_523fdc
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthFine_523fdc
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidthFine_523fdc
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidthFine_523fdc
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidthFine_523fdc], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthFine
%fwidthFine_523fdc = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthFine_523fdc() {
var res : vec3<f32> = fwidthFine(vec3<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_523fdc();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_523fdc();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_523fdc();
}

View File

@ -28,18 +28,7 @@ fn fwidthFine_68f4ef() {
var res: vec4<f32> = fwidthFine(vec4<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_68f4ef();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_68f4ef();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_68f4ef();
}

View File

@ -2,23 +2,7 @@ void fwidthFine_68f4ef() {
float4 res = fwidth(float4(0.0f, 0.0f, 0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthFine_68f4ef();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthFine_68f4ef();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthFine_68f4ef();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthFine_68f4ef() {
float4 res = fwidth(float4());
}
vertex void vertex_main() {
fwidthFine_68f4ef();
return;
}
fragment void fragment_main() {
fwidthFine_68f4ef();
return;
}
kernel void compute_main() {
fwidthFine_68f4ef();
return;
}
tint_ojzEQ7.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float4 res = fwidth(float4());
^
tint_ojzEQ7.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v4f32 is not allowed within a vertex function
tint_ojzEQ7.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v4f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,63 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthFine_68f4ef "fwidthFine_68f4ef"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%11 = OpConstantNull %v4float
%8 = OpConstantNull %v4float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_1 = OpConstant %float 1
%fwidthFine_68f4ef = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %11
%9 = OpFwidthFine %v4float %11
OpStore %res %9
%fwidthFine_68f4ef = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %8
%5 = OpFwidthFine %v4float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidthFine_68f4ef
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthFine_68f4ef
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidthFine_68f4ef
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidthFine_68f4ef
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidthFine_68f4ef], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthFine
%fwidthFine_68f4ef = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthFine_68f4ef() {
var res : vec4<f32> = fwidthFine(vec4<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_68f4ef();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_68f4ef();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_68f4ef();
}

View File

@ -28,18 +28,7 @@ fn fwidthFine_f1742d() {
var res: f32 = fwidthFine(1.0);
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_f1742d();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_f1742d();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_f1742d();
}

View File

@ -2,23 +2,7 @@ void fwidthFine_f1742d() {
float res = fwidth(1.0f);
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthFine_f1742d();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthFine_f1742d();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthFine_f1742d();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthFine_f1742d() {
float res = fwidth(1.0f);
}
vertex void vertex_main() {
fwidthFine_f1742d();
return;
}
fragment void fragment_main() {
fwidthFine_f1742d();
return;
}
kernel void compute_main() {
fwidthFine_f1742d();
return;
}
tint_WPjnD2.metal:5:9: warning: unused variable 'res' [-Wunused-variable]
float res = fwidth(1.0f);
^
tint_WPjnD2.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.f32 is not allowed within a vertex function
tint_WPjnD2.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,61 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 22
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthFine_f1742d "fwidthFine_f1742d"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%float_1 = OpConstant %float 1
%_ptr_Function_float = OpTypePointer Function %float
%fwidthFine_f1742d = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_float Function %4
%9 = OpFwidthFine %float %float_1
OpStore %res %9
%10 = OpConstantNull %float
%fwidthFine_f1742d = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_float Function %10
%5 = OpFwidthFine %float %float_1
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%14 = OpLabel
OpStore %tint_pointsize %float_1
%15 = OpFunctionCall %void %fwidthFine_f1742d
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthFine_f1742d
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%17 = OpLabel
%18 = OpFunctionCall %void %fwidthFine_f1742d
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%20 = OpLabel
%21 = OpFunctionCall %void %fwidthFine_f1742d
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '13[%vertex_main]'s callgraph contains function <id> 7[%fwidthFine_f1742d], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthFine
%fwidthFine_f1742d = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthFine_f1742d() {
var res : f32 = fwidthFine(1.0);
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_f1742d();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_f1742d();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_f1742d();
}

View File

@ -28,18 +28,7 @@ fn fwidthFine_ff6aa0() {
var res: vec2<f32> = fwidthFine(vec2<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_ff6aa0();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_ff6aa0();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_ff6aa0();
}

View File

@ -2,23 +2,7 @@ void fwidthFine_ff6aa0() {
float2 res = fwidth(float2(0.0f, 0.0f));
}
struct tint_symbol {
float4 value : SV_Position;
};
tint_symbol vertex_main() {
fwidthFine_ff6aa0();
const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
return tint_symbol_1;
}
void fragment_main() {
fwidthFine_ff6aa0();
return;
}
[numthreads(1, 1, 1)]
void compute_main() {
fwidthFine_ff6aa0();
return;
}

View File

@ -1,8 +1,3 @@
SKIP: FAILED
Validation Failure:
#include <metal_stdlib>
using namespace metal;
@ -10,31 +5,8 @@ void fwidthFine_ff6aa0() {
float2 res = fwidth(float2());
}
vertex void vertex_main() {
fwidthFine_ff6aa0();
return;
}
fragment void fragment_main() {
fwidthFine_ff6aa0();
return;
}
kernel void compute_main() {
fwidthFine_ff6aa0();
return;
}
tint_YbLbM2.metal:5:10: warning: unused variable 'res' [-Wunused-variable]
float2 res = fwidth(float2());
^
tint_YbLbM2.metal:8:13: error: vertex function 'vertex_main' uses unsupported builtin functions
vertex void vertex_main() {
^
note: function air.fwidth.v2f32 is not allowed within a vertex function
tint_YbLbM2.metal:18:13: error: kernel function 'compute_main' uses unsupported builtin functions
kernel void compute_main() {
^
note: function air.fwidth.v2f32 is not allowed within a kernel function
1 warning and 2 errors generated.

View File

@ -1,63 +1,31 @@
SKIP: FAILED
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 24
; Bound: 14
; Schema: 0
OpCapability Shader
OpCapability DerivativeControl
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize
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 %fwidthFine_ff6aa0 "fwidthFine_ff6aa0"
OpName %res "res"
OpName %vertex_main "vertex_main"
OpName %fragment_main "fragment_main"
OpName %compute_main "compute_main"
OpDecorate %tint_pointsize BuiltIn PointSize
%float = OpTypeFloat 32
%_ptr_Output_float = OpTypePointer Output %float
%4 = OpConstantNull %float
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
%void = OpTypeVoid
%5 = OpTypeFunction %void
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%11 = OpConstantNull %v2float
%8 = OpConstantNull %v2float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%float_1 = OpConstant %float 1
%fwidthFine_ff6aa0 = OpFunction %void None %5
%8 = OpLabel
%res = OpVariable %_ptr_Function_v2float Function %11
%9 = OpFwidthFine %v2float %11
OpStore %res %9
%fwidthFine_ff6aa0 = OpFunction %void None %1
%4 = OpLabel
%res = OpVariable %_ptr_Function_v2float Function %8
%5 = OpFwidthFine %v2float %8
OpStore %res %5
OpReturn
OpFunctionEnd
%vertex_main = OpFunction %void None %5
%15 = OpLabel
OpStore %tint_pointsize %float_1
%17 = OpFunctionCall %void %fwidthFine_ff6aa0
%fragment_main = OpFunction %void None %1
%12 = OpLabel
%13 = OpFunctionCall %void %fwidthFine_ff6aa0
OpReturn
OpFunctionEnd
%fragment_main = OpFunction %void None %5
%19 = OpLabel
%20 = OpFunctionCall %void %fwidthFine_ff6aa0
OpReturn
OpFunctionEnd
%compute_main = OpFunction %void None %5
%22 = OpLabel
%23 = OpFunctionCall %void %fwidthFine_ff6aa0
OpReturn
OpFunctionEnd
Validation Failure:
1:1: OpEntryPoint Entry Point <id> '14[%vertex_main]'s callgraph contains function <id> 7[%fwidthFine_ff6aa0], which cannot be used with the current execution model:
Derivative instructions require Fragment or GLCompute execution model: FwidthFine
%fwidthFine_ff6aa0 = OpFunction %void None %5

View File

@ -2,18 +2,7 @@ fn fwidthFine_ff6aa0() {
var res : vec2<f32> = fwidthFine(vec2<f32>());
}
[[stage(vertex)]]
fn vertex_main() -> [[builtin(position)]] vec4<f32> {
fwidthFine_ff6aa0();
return vec4<f32>();
}
[[stage(fragment)]]
fn fragment_main() {
fwidthFine_ff6aa0();
}
[[stage(compute)]]
fn compute_main() {
fwidthFine_ff6aa0();
}