tint: add e2e test for crbug.com/tint/1605
Bug: tint:1605 Change-Id: I6a94552110f4864dcd7fe011063fa35606104b48 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/103984 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
parent
9b190f57c9
commit
dadb1fca0d
|
@ -0,0 +1,16 @@
|
||||||
|
@group(0) @binding(0)
|
||||||
|
var<uniform> b: i32;
|
||||||
|
|
||||||
|
fn func_3() -> bool {
|
||||||
|
for (var i = 0; i < b; i++) {
|
||||||
|
for (var j = -1; j == 1; j++) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn main() {
|
||||||
|
func_3();
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
cbuffer cbuffer_b : register(b0, space0) {
|
||||||
|
uint4 b[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
bool func_3() {
|
||||||
|
{
|
||||||
|
[loop] for(int i = 0; (i < asint(b[0].x)); i = (i + 1)) {
|
||||||
|
{
|
||||||
|
[loop] for(int j = -1; (j == 1); j = (j + 1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void main() {
|
||||||
|
func_3();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
cbuffer cbuffer_b : register(b0, space0) {
|
||||||
|
uint4 b[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
bool func_3() {
|
||||||
|
{
|
||||||
|
[loop] for(int i = 0; (i < asint(b[0].x)); i = (i + 1)) {
|
||||||
|
{
|
||||||
|
[loop] for(int j = -1; (j == 1); j = (j + 1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void main() {
|
||||||
|
func_3();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FXC validation failure:
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3557: loop doesn't seem to do anything, consider removing [loop]
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3551: infinite loop detected - loop writes no values
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3557: loop doesn't seem to do anything, consider removing [loop]
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3551: infinite loop detected - loop writes no values
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3557: loop doesn't seem to do anything, consider removing [loop]
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3551: infinite loop detected - loop writes no values
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(9,16-53): warning X3557: loop doesn't seem to do anything, consider removing [loop]
|
||||||
|
C:\src\dawn\test\tint\Shader@0x0000026A74A16540(5,11-13): error X4555: cannot use casts on l-values
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
layout(binding = 0, std140) uniform b_block_ubo {
|
||||||
|
int inner;
|
||||||
|
} b;
|
||||||
|
|
||||||
|
bool func_3() {
|
||||||
|
{
|
||||||
|
for(int i = 0; (i < b.inner); i = (i + 1)) {
|
||||||
|
{
|
||||||
|
for(int j = -1; (j == 1); j = (j + 1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tint_symbol() {
|
||||||
|
func_3();
|
||||||
|
}
|
||||||
|
|
||||||
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||||
|
void main() {
|
||||||
|
tint_symbol();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
bool func_3(const constant int* const tint_symbol_1) {
|
||||||
|
for(int i = 0; (i < *(tint_symbol_1)); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
|
||||||
|
for(int j = -1; (j == 1); j = as_type<int>((as_type<uint>(j) + as_type<uint>(1)))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel void tint_symbol(const constant int* tint_symbol_2 [[buffer(0)]]) {
|
||||||
|
func_3(tint_symbol_2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 48
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpMemoryModel Logical GLSL450
|
||||||
|
OpEntryPoint GLCompute %main "main"
|
||||||
|
OpExecutionMode %main LocalSize 1 1 1
|
||||||
|
OpName %b_block "b_block"
|
||||||
|
OpMemberName %b_block 0 "inner"
|
||||||
|
OpName %b "b"
|
||||||
|
OpName %func_3 "func_3"
|
||||||
|
OpName %i "i"
|
||||||
|
OpName %j "j"
|
||||||
|
OpName %main "main"
|
||||||
|
OpDecorate %b_block Block
|
||||||
|
OpMemberDecorate %b_block 0 Offset 0
|
||||||
|
OpDecorate %b NonWritable
|
||||||
|
OpDecorate %b DescriptorSet 0
|
||||||
|
OpDecorate %b Binding 0
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%b_block = OpTypeStruct %int
|
||||||
|
%_ptr_Uniform_b_block = OpTypePointer Uniform %b_block
|
||||||
|
%b = OpVariable %_ptr_Uniform_b_block Uniform
|
||||||
|
%bool = OpTypeBool
|
||||||
|
%5 = OpTypeFunction %bool
|
||||||
|
%9 = OpConstantNull %int
|
||||||
|
%_ptr_Function_int = OpTypePointer Function %int
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%uint_0 = OpConstant %uint 0
|
||||||
|
%_ptr_Uniform_int = OpTypePointer Uniform %int
|
||||||
|
%int_n1 = OpConstant %int -1
|
||||||
|
%int_1 = OpConstant %int 1
|
||||||
|
%38 = OpConstantNull %bool
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%43 = OpTypeFunction %void
|
||||||
|
%func_3 = OpFunction %bool None %5
|
||||||
|
%8 = OpLabel
|
||||||
|
%i = OpVariable %_ptr_Function_int Function %9
|
||||||
|
%j = OpVariable %_ptr_Function_int Function %9
|
||||||
|
OpStore %i %9
|
||||||
|
OpBranch %12
|
||||||
|
%12 = OpLabel
|
||||||
|
OpLoopMerge %13 %14 None
|
||||||
|
OpBranch %15
|
||||||
|
%15 = OpLabel
|
||||||
|
%17 = OpLoad %int %i
|
||||||
|
%21 = OpAccessChain %_ptr_Uniform_int %b %uint_0
|
||||||
|
%22 = OpLoad %int %21
|
||||||
|
%23 = OpSLessThan %bool %17 %22
|
||||||
|
%16 = OpLogicalNot %bool %23
|
||||||
|
OpSelectionMerge %24 None
|
||||||
|
OpBranchConditional %16 %25 %24
|
||||||
|
%25 = OpLabel
|
||||||
|
OpBranch %13
|
||||||
|
%24 = OpLabel
|
||||||
|
OpStore %j %int_n1
|
||||||
|
OpBranch %28
|
||||||
|
%28 = OpLabel
|
||||||
|
OpLoopMerge %29 %30 None
|
||||||
|
OpBranch %31
|
||||||
|
%31 = OpLabel
|
||||||
|
%33 = OpLoad %int %j
|
||||||
|
%35 = OpIEqual %bool %33 %int_1
|
||||||
|
%32 = OpLogicalNot %bool %35
|
||||||
|
OpSelectionMerge %36 None
|
||||||
|
OpBranchConditional %32 %37 %36
|
||||||
|
%37 = OpLabel
|
||||||
|
OpBranch %29
|
||||||
|
%36 = OpLabel
|
||||||
|
OpReturnValue %38
|
||||||
|
%30 = OpLabel
|
||||||
|
%39 = OpLoad %int %j
|
||||||
|
%40 = OpIAdd %int %39 %int_1
|
||||||
|
OpStore %j %40
|
||||||
|
OpBranch %28
|
||||||
|
%29 = OpLabel
|
||||||
|
OpBranch %14
|
||||||
|
%14 = OpLabel
|
||||||
|
%41 = OpLoad %int %i
|
||||||
|
%42 = OpIAdd %int %41 %int_1
|
||||||
|
OpStore %i %42
|
||||||
|
OpBranch %12
|
||||||
|
%13 = OpLabel
|
||||||
|
OpReturnValue %38
|
||||||
|
OpFunctionEnd
|
||||||
|
%main = OpFunction %void None %43
|
||||||
|
%46 = OpLabel
|
||||||
|
%47 = OpFunctionCall %bool %func_3
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,15 @@
|
||||||
|
@group(0) @binding(0) var<uniform> b : i32;
|
||||||
|
|
||||||
|
fn func_3() -> bool {
|
||||||
|
for(var i = 0; (i < b); i++) {
|
||||||
|
for(var j = -1; (j == 1); j++) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn main() {
|
||||||
|
func_3();
|
||||||
|
}
|
Loading…
Reference in New Issue