From e0cc771e0affdb3e2d0c11d1362d128c5d1af9bb Mon Sep 17 00:00:00 2001 From: James Price Date: Tue, 22 Jun 2021 20:19:49 +0000 Subject: [PATCH] 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 Reviewed-by: Ben Clayton Commit-Queue: James Price Kokoro: Kokoro --- src/intrinsic_table.inl | 12 ++-- src/intrinsics.def | 12 ++-- test/intrinsics/gen/fwidth/5d1b39.wgsl | 11 ---- .../gen/fwidth/5d1b39.wgsl.expected.hlsl | 16 ------ .../gen/fwidth/5d1b39.wgsl.expected.msl | 28 ---------- .../gen/fwidth/5d1b39.wgsl.expected.spvasm | 56 ++++--------------- .../gen/fwidth/5d1b39.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidth/b83ebb.wgsl | 11 ---- .../gen/fwidth/b83ebb.wgsl.expected.hlsl | 16 ------ .../gen/fwidth/b83ebb.wgsl.expected.msl | 28 ---------- .../gen/fwidth/b83ebb.wgsl.expected.spvasm | 56 ++++--------------- .../gen/fwidth/b83ebb.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidth/d2ab9a.wgsl | 11 ---- .../gen/fwidth/d2ab9a.wgsl.expected.hlsl | 16 ------ .../gen/fwidth/d2ab9a.wgsl.expected.msl | 28 ---------- .../gen/fwidth/d2ab9a.wgsl.expected.spvasm | 56 ++++--------------- .../gen/fwidth/d2ab9a.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidth/df38ef.wgsl | 11 ---- .../gen/fwidth/df38ef.wgsl.expected.hlsl | 16 ------ .../gen/fwidth/df38ef.wgsl.expected.msl | 28 ---------- .../gen/fwidth/df38ef.wgsl.expected.spvasm | 54 ++++-------------- .../gen/fwidth/df38ef.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthCoarse/159c8a.wgsl | 11 ---- .../fwidthCoarse/159c8a.wgsl.expected.hlsl | 16 ------ .../gen/fwidthCoarse/159c8a.wgsl.expected.msl | 28 ---------- .../fwidthCoarse/159c8a.wgsl.expected.spvasm | 54 ++++-------------- .../fwidthCoarse/159c8a.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl | 11 ---- .../fwidthCoarse/1e59d9.wgsl.expected.hlsl | 16 ------ .../gen/fwidthCoarse/1e59d9.wgsl.expected.msl | 28 ---------- .../fwidthCoarse/1e59d9.wgsl.expected.spvasm | 56 ++++--------------- .../fwidthCoarse/1e59d9.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl | 11 ---- .../fwidthCoarse/4e4fc4.wgsl.expected.hlsl | 16 ------ .../gen/fwidthCoarse/4e4fc4.wgsl.expected.msl | 28 ---------- .../fwidthCoarse/4e4fc4.wgsl.expected.spvasm | 56 ++++--------------- .../fwidthCoarse/4e4fc4.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthCoarse/e653f7.wgsl | 11 ---- .../fwidthCoarse/e653f7.wgsl.expected.hlsl | 16 ------ .../gen/fwidthCoarse/e653f7.wgsl.expected.msl | 28 ---------- .../fwidthCoarse/e653f7.wgsl.expected.spvasm | 56 ++++--------------- .../fwidthCoarse/e653f7.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthFine/523fdc.wgsl | 11 ---- .../gen/fwidthFine/523fdc.wgsl.expected.hlsl | 16 ------ .../gen/fwidthFine/523fdc.wgsl.expected.msl | 28 ---------- .../fwidthFine/523fdc.wgsl.expected.spvasm | 56 ++++--------------- .../gen/fwidthFine/523fdc.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthFine/68f4ef.wgsl | 11 ---- .../gen/fwidthFine/68f4ef.wgsl.expected.hlsl | 16 ------ .../gen/fwidthFine/68f4ef.wgsl.expected.msl | 28 ---------- .../fwidthFine/68f4ef.wgsl.expected.spvasm | 56 ++++--------------- .../gen/fwidthFine/68f4ef.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthFine/f1742d.wgsl | 11 ---- .../gen/fwidthFine/f1742d.wgsl.expected.hlsl | 16 ------ .../gen/fwidthFine/f1742d.wgsl.expected.msl | 28 ---------- .../fwidthFine/f1742d.wgsl.expected.spvasm | 54 ++++-------------- .../gen/fwidthFine/f1742d.wgsl.expected.wgsl | 11 ---- test/intrinsics/gen/fwidthFine/ff6aa0.wgsl | 11 ---- .../gen/fwidthFine/ff6aa0.wgsl.expected.hlsl | 16 ------ .../gen/fwidthFine/ff6aa0.wgsl.expected.msl | 28 ---------- .../fwidthFine/ff6aa0.wgsl.expected.spvasm | 56 ++++--------------- .../gen/fwidthFine/ff6aa0.wgsl.expected.wgsl | 11 ---- 62 files changed, 156 insertions(+), 1326 deletions(-) diff --git a/src/intrinsic_table.inl b/src/intrinsic_table.inl index e6bf000085..0ac0cf6e37 100644 --- a/src/intrinsic_table.inl +++ b/src/intrinsic_table.inl @@ -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, }, { diff --git a/src/intrinsics.def b/src/intrinsics.def index 4229e730a6..70f53b9440 100644 --- a/src/intrinsics.def +++ b/src/intrinsics.def @@ -311,12 +311,12 @@ fn fract(f32) -> f32 fn fract(vec) -> vec fn frexp(f32, ptr) -> f32 fn frexp(vec, ptr, A>) -> vec -fn fwidth(f32) -> f32 -fn fwidth(vec) -> vec -fn fwidthCoarse(f32) -> f32 -fn fwidthCoarse(vec) -> vec -fn fwidthFine(f32) -> f32 -fn fwidthFine(vec) -> vec +[[stage("fragment")]] fn fwidth(f32) -> f32 +[[stage("fragment")]] fn fwidth(vec) -> vec +[[stage("fragment")]] fn fwidthCoarse(f32) -> f32 +[[stage("fragment")]] fn fwidthCoarse(vec) -> vec +[[stage("fragment")]] fn fwidthFine(f32) -> f32 +[[stage("fragment")]] fn fwidthFine(vec) -> vec fn ignore(T) fn inverseSqrt(f32) -> f32 fn inverseSqrt(vec) -> vec diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl b/test/intrinsics/gen/fwidth/5d1b39.wgsl index f7f7684a4a..f323acad63 100644 --- a/test/intrinsics/gen/fwidth/5d1b39.wgsl +++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl @@ -28,18 +28,7 @@ fn fwidth_5d1b39() { var res: vec3 = fwidth(vec3()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_5d1b39(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_5d1b39(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_5d1b39(); -} diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.hlsl b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.hlsl index 097aba63c3..3d8020609d 100644 --- a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl index 6d2c8fc7da..28a57ced31 100644 --- a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.spvasm b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.spvasm index 4816e1099b..5dc5ef3250 100644 --- a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl index 966c33a44f..b2f06923fd 100644 --- a/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidth/5d1b39.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidth_5d1b39() { var res : vec3 = fwidth(vec3()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_5d1b39(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_5d1b39(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_5d1b39(); -} diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl b/test/intrinsics/gen/fwidth/b83ebb.wgsl index be0e78d92a..e528240b8e 100644 --- a/test/intrinsics/gen/fwidth/b83ebb.wgsl +++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl @@ -28,18 +28,7 @@ fn fwidth_b83ebb() { var res: vec2 = fwidth(vec2()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_b83ebb(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_b83ebb(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_b83ebb(); -} diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.hlsl b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.hlsl index c80fcd84fc..f1855264e7 100644 --- a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl index b01f8dde50..303cfba656 100644 --- a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.spvasm b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.spvasm index b22356f326..033004d9ce 100644 --- a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl index bffa899178..a858363c6e 100644 --- a/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidth/b83ebb.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidth_b83ebb() { var res : vec2 = fwidth(vec2()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_b83ebb(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_b83ebb(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_b83ebb(); -} diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl index 72dcb51c2c..615e25155a 100644 --- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl +++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl @@ -28,18 +28,7 @@ fn fwidth_d2ab9a() { var res: vec4 = fwidth(vec4()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_d2ab9a(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_d2ab9a(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_d2ab9a(); -} diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.hlsl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.hlsl index 4f18daaedc..2de2b2b3aa 100644 --- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl index af3f56b474..16b46fcd06 100644 --- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.spvasm b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.spvasm index 0ce3af07b1..779ba1f84b 100644 --- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl index c8b11c6451..ee3c5511a4 100644 --- a/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidth/d2ab9a.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidth_d2ab9a() { var res : vec4 = fwidth(vec4()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_d2ab9a(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_d2ab9a(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_d2ab9a(); -} diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl b/test/intrinsics/gen/fwidth/df38ef.wgsl index 875e29d887..5cd698deca 100644 --- a/test/intrinsics/gen/fwidth/df38ef.wgsl +++ b/test/intrinsics/gen/fwidth/df38ef.wgsl @@ -28,18 +28,7 @@ fn fwidth_df38ef() { var res: f32 = fwidth(1.0); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_df38ef(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_df38ef(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_df38ef(); -} diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.hlsl b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.hlsl index 520c17ed4b..35d42bf52f 100644 --- a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl index c63e604c37..21b2f40052 100644 --- a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.spvasm b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.spvasm index 7dcebbcb97..977acdfb18 100644 --- a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.spvasm @@ -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 '13[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl index b19db9900a..a0fcaec0ea 100644 --- a/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidth/df38ef.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidth_df38ef() { var res : f32 = fwidth(1.0); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidth_df38ef(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidth_df38ef(); } - -[[stage(compute)]] -fn compute_main() { - fwidth_df38ef(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl index 3294135d8e..35df109b2b 100644 --- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl @@ -28,18 +28,7 @@ fn fwidthCoarse_159c8a() { var res: f32 = fwidthCoarse(1.0); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_159c8a(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_159c8a(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_159c8a(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.hlsl index 6118e10180..1c2d09bb42 100644 --- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl index 18857effca..82190f39ca 100644 --- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.spvasm index 12a2effdf1..9eaa84c671 100644 --- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.spvasm @@ -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 '13[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl index abde6f882e..f4c9169626 100644 --- a/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/159c8a.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthCoarse_159c8a() { var res : f32 = fwidthCoarse(1.0); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_159c8a(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_159c8a(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_159c8a(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl index 57e23f60ed..c1c41e1551 100644 --- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl @@ -28,18 +28,7 @@ fn fwidthCoarse_1e59d9() { var res: vec3 = fwidthCoarse(vec3()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_1e59d9(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_1e59d9(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_1e59d9(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.hlsl index 0c4024a8de..41cef2e018 100644 --- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl index 1d34e453c9..621c23760f 100644 --- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.spvasm index e15f0500d3..c0f4e31149 100644 --- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl index e55be2823d..838c5e0e5d 100644 --- a/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/1e59d9.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthCoarse_1e59d9() { var res : vec3 = fwidthCoarse(vec3()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_1e59d9(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_1e59d9(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_1e59d9(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl index 18bfb035a8..1d7272efb8 100644 --- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl @@ -28,18 +28,7 @@ fn fwidthCoarse_4e4fc4() { var res: vec4 = fwidthCoarse(vec4()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_4e4fc4(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_4e4fc4(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_4e4fc4(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.hlsl index 07dc4e3509..950401fe60 100644 --- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl index 476cee9a83..29dba71d51 100644 --- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.spvasm index 4edff8c1f8..36c64b516e 100644 --- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl index 04e4b3a511..01eae21e3c 100644 --- a/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/4e4fc4.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthCoarse_4e4fc4() { var res : vec4 = fwidthCoarse(vec4()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_4e4fc4(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_4e4fc4(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_4e4fc4(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl index afda042205..b27d20da8c 100644 --- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl @@ -28,18 +28,7 @@ fn fwidthCoarse_e653f7() { var res: vec2 = fwidthCoarse(vec2()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_e653f7(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_e653f7(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_e653f7(); -} diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.hlsl index 91cc3fdf60..08814d0875 100644 --- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl index 1cccfb76c2..cfd97035bc 100644 --- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.spvasm index 137bfd8500..8aa64246b4 100644 --- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl index 123e26f600..2bed1c7f8d 100644 --- a/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthCoarse/e653f7.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthCoarse_e653f7() { var res : vec2 = fwidthCoarse(vec2()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthCoarse_e653f7(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthCoarse_e653f7(); } - -[[stage(compute)]] -fn compute_main() { - fwidthCoarse_e653f7(); -} diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl index a2230195d4..a882b5cf63 100644 --- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl +++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl @@ -28,18 +28,7 @@ fn fwidthFine_523fdc() { var res: vec3 = fwidthFine(vec3()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_523fdc(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_523fdc(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_523fdc(); -} diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.hlsl index 5e8c7f205d..39a541e07f 100644 --- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl index 8b5d8dae95..aa1d73d174 100644 --- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.spvasm index 622b3183e8..70148cca17 100644 --- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl index 28a6e6a1ed..d0fff429de 100644 --- a/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthFine/523fdc.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthFine_523fdc() { var res : vec3 = fwidthFine(vec3()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_523fdc(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_523fdc(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_523fdc(); -} diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl index 1241d11bd5..f3fce3bece 100644 --- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl +++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl @@ -28,18 +28,7 @@ fn fwidthFine_68f4ef() { var res: vec4 = fwidthFine(vec4()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_68f4ef(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_68f4ef(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_68f4ef(); -} diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.hlsl index 6f5cae95ac..baa86f5700 100644 --- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl index d1afd55106..b7c53d9613 100644 --- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.spvasm index 7a2cfe768c..7258785d76 100644 --- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl index 467bdcc62e..19389eb9ba 100644 --- a/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthFine/68f4ef.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthFine_68f4ef() { var res : vec4 = fwidthFine(vec4()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_68f4ef(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_68f4ef(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_68f4ef(); -} diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl index 0573da6490..8d6c71cbf2 100644 --- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl +++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl @@ -28,18 +28,7 @@ fn fwidthFine_f1742d() { var res: f32 = fwidthFine(1.0); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_f1742d(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_f1742d(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_f1742d(); -} diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.hlsl index 11f8ca86e3..ca2184f67c 100644 --- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl index 2e39779fe0..5a98fd6073 100644 --- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.spvasm index 8e452ad9ef..801d9d7a3b 100644 --- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.spvasm @@ -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 '13[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl index f085f7d91b..6985860e91 100644 --- a/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthFine/f1742d.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthFine_f1742d() { var res : f32 = fwidthFine(1.0); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_f1742d(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_f1742d(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_f1742d(); -} diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl index a522efa03b..ba6726e2c0 100644 --- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl +++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl @@ -28,18 +28,7 @@ fn fwidthFine_ff6aa0() { var res: vec2 = fwidthFine(vec2()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_ff6aa0(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_ff6aa0(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_ff6aa0(); -} diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.hlsl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.hlsl index 6cb6031414..bb6d7cfffe 100644 --- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.hlsl +++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.hlsl @@ -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; -} diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl index bb857b73fd..7ebd710906 100644 --- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl +++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.msl @@ -1,8 +1,3 @@ -SKIP: FAILED - - - -Validation Failure: #include 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. diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.spvasm b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.spvasm index eb2f5d8be2..591d6e083a 100644 --- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.spvasm +++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.spvasm @@ -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 '14[%vertex_main]'s callgraph contains function 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 - diff --git a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl index 578a12e0a0..c9b1e2405d 100644 --- a/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl +++ b/test/intrinsics/gen/fwidthFine/ff6aa0.wgsl.expected.wgsl @@ -2,18 +2,7 @@ fn fwidthFine_ff6aa0() { var res : vec2 = fwidthFine(vec2()); } -[[stage(vertex)]] -fn vertex_main() -> [[builtin(position)]] vec4 { - fwidthFine_ff6aa0(); - return vec4(); -} - [[stage(fragment)]] fn fragment_main() { fwidthFine_ff6aa0(); } - -[[stage(compute)]] -fn compute_main() { - fwidthFine_ff6aa0(); -}