mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-09 13:38:00 +00:00
[WGSL] Allow default as a case selector
This CL updates the WGSL parser to parse `default` as a case selector value. Bug: tint:1633 Change-Id: I57661d25924e36bec5c03f96399c557fb7bbf760 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106382 Commit-Queue: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com> Auto-Submit: Dan Sinclair <dsinclair@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
d27151d333
commit
f148f0891b
16
test/tint/statements/switch/case_default.wgsl
Normal file
16
test/tint/statements/switch/case_default.wgsl
Normal file
@@ -0,0 +1,16 @@
|
||||
@compute @workgroup_size(1)
|
||||
fn f() {
|
||||
var i : i32;
|
||||
var result : i32;
|
||||
switch(i) {
|
||||
case default: {
|
||||
result = 10;
|
||||
}
|
||||
case 1: {
|
||||
result = 22;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
default: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
default: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
26
test/tint/statements/switch/case_default.wgsl.expected.glsl
Normal file
26
test/tint/statements/switch/case_default.wgsl.expected.glsl
Normal file
@@ -0,0 +1,26 @@
|
||||
#version 310 es
|
||||
|
||||
void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
default: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void main() {
|
||||
f();
|
||||
return;
|
||||
}
|
||||
23
test/tint/statements/switch/case_default.wgsl.expected.msl
Normal file
23
test/tint/statements/switch/case_default.wgsl.expected.msl
Normal file
@@ -0,0 +1,23 @@
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
kernel void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
default: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
; SPIR-V
|
||||
; Version: 1.3
|
||||
; Generator: Google Tint Compiler; 0
|
||||
; Bound: 18
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %f "f"
|
||||
OpExecutionMode %f LocalSize 1 1 1
|
||||
OpName %f "f"
|
||||
OpName %i "i"
|
||||
OpName %result "result"
|
||||
%void = OpTypeVoid
|
||||
%1 = OpTypeFunction %void
|
||||
%int = OpTypeInt 32 1
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%8 = OpConstantNull %int
|
||||
%int_10 = OpConstant %int 10
|
||||
%int_22 = OpConstant %int 22
|
||||
%int_33 = OpConstant %int 33
|
||||
%f = OpFunction %void None %1
|
||||
%4 = OpLabel
|
||||
%i = OpVariable %_ptr_Function_int Function %8
|
||||
%result = OpVariable %_ptr_Function_int Function %8
|
||||
%11 = OpLoad %int %i
|
||||
OpSelectionMerge %10 None
|
||||
OpSwitch %11 %12 1 %13 2 %14
|
||||
%12 = OpLabel
|
||||
OpStore %result %int_10
|
||||
OpBranch %10
|
||||
%13 = OpLabel
|
||||
OpStore %result %int_22
|
||||
OpBranch %10
|
||||
%14 = OpLabel
|
||||
OpStore %result %int_33
|
||||
OpBranch %10
|
||||
%10 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
16
test/tint/statements/switch/case_default.wgsl.expected.wgsl
Normal file
16
test/tint/statements/switch/case_default.wgsl.expected.wgsl
Normal file
@@ -0,0 +1,16 @@
|
||||
@compute @workgroup_size(1)
|
||||
fn f() {
|
||||
var i : i32;
|
||||
var result : i32;
|
||||
switch(i) {
|
||||
default: {
|
||||
result = 10;
|
||||
}
|
||||
case 1: {
|
||||
result = 22;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
}
|
||||
}
|
||||
}
|
||||
16
test/tint/statements/switch/case_default_mixed.wgsl
Normal file
16
test/tint/statements/switch/case_default_mixed.wgsl
Normal file
@@ -0,0 +1,16 @@
|
||||
@compute @workgroup_size(1)
|
||||
fn f() {
|
||||
var i : i32;
|
||||
var result : i32;
|
||||
switch(i) {
|
||||
case 0: {
|
||||
result = 10;
|
||||
}
|
||||
case 1, default: {
|
||||
result = 22;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
case 0: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
default: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
[numthreads(1, 1, 1)]
|
||||
void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
case 0: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
default: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
#version 310 es
|
||||
|
||||
void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
case 0: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
default: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||
void main() {
|
||||
f();
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#include <metal_stdlib>
|
||||
|
||||
using namespace metal;
|
||||
kernel void f() {
|
||||
int i = 0;
|
||||
int result = 0;
|
||||
switch(i) {
|
||||
case 0: {
|
||||
result = 10;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
default: {
|
||||
result = 22;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
; SPIR-V
|
||||
; Version: 1.3
|
||||
; Generator: Google Tint Compiler; 0
|
||||
; Bound: 18
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %f "f"
|
||||
OpExecutionMode %f LocalSize 1 1 1
|
||||
OpName %f "f"
|
||||
OpName %i "i"
|
||||
OpName %result "result"
|
||||
%void = OpTypeVoid
|
||||
%1 = OpTypeFunction %void
|
||||
%int = OpTypeInt 32 1
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%8 = OpConstantNull %int
|
||||
%int_10 = OpConstant %int 10
|
||||
%int_22 = OpConstant %int 22
|
||||
%int_33 = OpConstant %int 33
|
||||
%f = OpFunction %void None %1
|
||||
%4 = OpLabel
|
||||
%i = OpVariable %_ptr_Function_int Function %8
|
||||
%result = OpVariable %_ptr_Function_int Function %8
|
||||
%11 = OpLoad %int %i
|
||||
OpSelectionMerge %10 None
|
||||
OpSwitch %11 %12 0 %13 1 %12 2 %14
|
||||
%13 = OpLabel
|
||||
OpStore %result %int_10
|
||||
OpBranch %10
|
||||
%12 = OpLabel
|
||||
OpStore %result %int_22
|
||||
OpBranch %10
|
||||
%14 = OpLabel
|
||||
OpStore %result %int_33
|
||||
OpBranch %10
|
||||
%10 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
@@ -0,0 +1,16 @@
|
||||
@compute @workgroup_size(1)
|
||||
fn f() {
|
||||
var i : i32;
|
||||
var result : i32;
|
||||
switch(i) {
|
||||
case 0: {
|
||||
result = 10;
|
||||
}
|
||||
case 1, default: {
|
||||
result = 22;
|
||||
}
|
||||
case 2: {
|
||||
result = 33;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user