mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-10 05:57:51 +00:00
Delete tests with invalid SPIR-V inputs
The structured CFG rule was revised/clarified in SPIR-V 1.6 Rev2
Validation now rejects a few cases.
SpvParserTest, ValueFromBlockNotInBlockOrder
SpvParserFunctionVarTest, EmitStatement_Phi_ValueFromBlockNotInBlockOrderIgnored
SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromBlockNotInBlockOrderIgnored
- Originally from crbug.com/tint/804
Invalid by SPIR-V 1.6 Rev2 update to validation rules:
- Block 80 is a structurally reachable continue target
- Block 25 is not structually reachable, and not part of the loop,
but branches to 80.
vk-gl-cts/graphicsfuzz/cov-dead-branch-func-return-arg/0-opt.*
- The continue construct with the continue target 37[%37]
is not structurally post dominated by the back-edge block 64[%64]
- The SPIRV-Tools inliner no longer creates such cases. It splits the
single-block loop and pushes the continue target down.
vk-gl-cts/graphicsfuzz/nested-for-loops-with-return/0-opt.spvasm
- The loop headed at block 46 does not structurally dominate its merge
block 44. There is a continue-target edge from 41 to 44.
SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_MultiBlockContinueConstruct_ContinueIsHeader.spvasm
SpvParserCFGTest_EmitBody_Loop_MultiBlockContinueIsEntireLoop.spvasm
SpvParserCFGTest_LabelControlFlowConstructs_MultiBlockLoop_HeaderIsContinue.spvasm
SpvParserCFGTest_SiblingLoopConstruct_ContinueIsWholeMultiBlockLoop.spvasm
SpvParserCFGTest, ClassifyCFGEdges_BackEdge_MultiBlockLoop_MultiBlockContinueConstruct_ContinueIsHeader
SpvParserCFGTest, EmitBody_Loop_MultiBlockContinueIsEntireLoop
SpvParserCFGTest, LabelControlFlowConstructs_MultiBlockLoop_HeaderIsContinue
SpvParserCFGTest, SiblingLoopConstruct_ContinueIsWholeMultiBlockLoop
- Continue target 20 also its own loop header, but is not structurally
post-dominated by the backedge block.
- Delete the end-to-end test.
- Keep the unit test because it's about classifying edges, but disable dumping
into the end2end suites.
Change-Id: I9ec2504aadd2fec9ea463901af7dc1b5f47481b5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/95580
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: David Neto <dneto@google.com>
This commit is contained in:
@@ -1,57 +0,0 @@
|
||||
; Test: SpvParserCFGTest_ClassifyCFGEdges_BackEdge_MultiBlockLoop_MultiBlockContinueConstruct_ContinueIsHeader.spvasm
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||||
; Bound: 1000
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical Simple
|
||||
OpEntryPoint Fragment %100 "main"
|
||||
OpExecutionMode %100 OriginUpperLeft
|
||||
OpName %var "var"
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%bool = OpTypeBool
|
||||
%5 = OpConstantNull %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%false = OpConstantFalse %bool
|
||||
%uint = OpTypeInt 32 0
|
||||
%int = OpTypeInt 32 1
|
||||
%uint_42 = OpConstant %uint 42
|
||||
%int_42 = OpConstant %int 42
|
||||
%13 = OpTypeFunction %uint
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%uint_4 = OpConstant %uint 4
|
||||
%uint_5 = OpConstant %uint 5
|
||||
%uint_6 = OpConstant %uint 6
|
||||
%uint_7 = OpConstant %uint 7
|
||||
%uint_8 = OpConstant %uint 8
|
||||
%uint_10 = OpConstant %uint 10
|
||||
%uint_20 = OpConstant %uint 20
|
||||
%uint_30 = OpConstant %uint 30
|
||||
%uint_40 = OpConstant %uint 40
|
||||
%uint_50 = OpConstant %uint 50
|
||||
%uint_90 = OpConstant %uint 90
|
||||
%uint_99 = OpConstant %uint 99
|
||||
%_ptr_Private_uint = OpTypePointer Private %uint
|
||||
%var = OpVariable %_ptr_Private_uint Private
|
||||
%uint_999 = OpConstant %uint 999
|
||||
%100 = OpFunction %void None %3
|
||||
%10 = OpLabel
|
||||
OpBranch %20
|
||||
%20 = OpLabel
|
||||
OpLoopMerge %99 %20 None
|
||||
OpBranch %30
|
||||
%30 = OpLabel
|
||||
OpBranch %40
|
||||
%40 = OpLabel
|
||||
OpBranch %50
|
||||
%50 = OpLabel
|
||||
OpBranchConditional %5 %20 %99
|
||||
%99 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
; Test: SpvParserCFGTest_EmitBody_Loop_MultiBlockContinueIsEntireLoop.spvasm
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||||
; Bound: 1000
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical Simple
|
||||
OpEntryPoint Fragment %100 "main"
|
||||
OpExecutionMode %100 OriginUpperLeft
|
||||
OpName %var "var"
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%bool = OpTypeBool
|
||||
%5 = OpConstantNull %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%false = OpConstantFalse %bool
|
||||
%uint = OpTypeInt 32 0
|
||||
%int = OpTypeInt 32 1
|
||||
%uint_42 = OpConstant %uint 42
|
||||
%int_42 = OpConstant %int 42
|
||||
%13 = OpTypeFunction %uint
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%uint_4 = OpConstant %uint 4
|
||||
%uint_5 = OpConstant %uint 5
|
||||
%uint_6 = OpConstant %uint 6
|
||||
%uint_7 = OpConstant %uint 7
|
||||
%uint_8 = OpConstant %uint 8
|
||||
%uint_10 = OpConstant %uint 10
|
||||
%uint_20 = OpConstant %uint 20
|
||||
%uint_30 = OpConstant %uint 30
|
||||
%uint_40 = OpConstant %uint 40
|
||||
%uint_50 = OpConstant %uint 50
|
||||
%uint_90 = OpConstant %uint 90
|
||||
%uint_99 = OpConstant %uint 99
|
||||
%_ptr_Private_uint = OpTypePointer Private %uint
|
||||
%var = OpVariable %_ptr_Private_uint Private
|
||||
%uint_999 = OpConstant %uint 999
|
||||
%100 = OpFunction %void None %3
|
||||
%10 = OpLabel
|
||||
OpStore %var %uint_0
|
||||
OpBranch %20
|
||||
%20 = OpLabel
|
||||
OpStore %var %uint_1
|
||||
OpLoopMerge %99 %20 None
|
||||
OpBranch %80
|
||||
%80 = OpLabel
|
||||
OpStore %var %uint_2
|
||||
OpBranchConditional %5 %99 %20
|
||||
%99 = OpLabel
|
||||
OpStore %var %uint_3
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
SKIP: FAILED
|
||||
|
||||
static uint var_1 = 0u;
|
||||
|
||||
void main_1() {
|
||||
var_1 = 0u;
|
||||
[loop] while (true) {
|
||||
var_1 = 1u;
|
||||
var_1 = 2u;
|
||||
if (false) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
var_1 = 3u;
|
||||
return;
|
||||
}
|
||||
|
||||
void main() {
|
||||
main_1();
|
||||
return;
|
||||
}
|
||||
warning: DXIL.dll not found. Resulting DXIL will not be signed for use in release environments.
|
||||
|
||||
error: validation errors
|
||||
/tmp/tint_cS4x46:16: error: Loop must have break.
|
||||
Validation failed.
|
||||
|
||||
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
; Test: SpvParserCFGTest_LabelControlFlowConstructs_MultiBlockLoop_HeaderIsContinue.spvasm
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||||
; Bound: 1000
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical Simple
|
||||
OpEntryPoint Fragment %100 "main"
|
||||
OpExecutionMode %100 OriginUpperLeft
|
||||
OpName %var "var"
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%bool = OpTypeBool
|
||||
%5 = OpConstantNull %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%false = OpConstantFalse %bool
|
||||
%uint = OpTypeInt 32 0
|
||||
%int = OpTypeInt 32 1
|
||||
%uint_42 = OpConstant %uint 42
|
||||
%int_42 = OpConstant %int 42
|
||||
%13 = OpTypeFunction %uint
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%uint_4 = OpConstant %uint 4
|
||||
%uint_5 = OpConstant %uint 5
|
||||
%uint_6 = OpConstant %uint 6
|
||||
%uint_7 = OpConstant %uint 7
|
||||
%uint_8 = OpConstant %uint 8
|
||||
%uint_10 = OpConstant %uint 10
|
||||
%uint_20 = OpConstant %uint 20
|
||||
%uint_30 = OpConstant %uint 30
|
||||
%uint_40 = OpConstant %uint 40
|
||||
%uint_50 = OpConstant %uint 50
|
||||
%uint_90 = OpConstant %uint 90
|
||||
%uint_99 = OpConstant %uint 99
|
||||
%_ptr_Private_uint = OpTypePointer Private %uint
|
||||
%var = OpVariable %_ptr_Private_uint Private
|
||||
%uint_999 = OpConstant %uint 999
|
||||
%100 = OpFunction %void None %3
|
||||
%10 = OpLabel
|
||||
OpBranch %20
|
||||
%20 = OpLabel
|
||||
OpLoopMerge %99 %20 None
|
||||
OpBranch %30
|
||||
%30 = OpLabel
|
||||
OpBranch %40
|
||||
%40 = OpLabel
|
||||
OpBranch %50
|
||||
%50 = OpLabel
|
||||
OpBranchConditional %5 %20 %99
|
||||
%99 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
; Test: SpvParserCFGTest_SiblingLoopConstruct_ContinueIsWholeMultiBlockLoop.spvasm
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||||
; Bound: 1000
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical Simple
|
||||
OpEntryPoint Fragment %100 "main"
|
||||
OpExecutionMode %100 OriginUpperLeft
|
||||
OpName %var "var"
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%bool = OpTypeBool
|
||||
%5 = OpConstantNull %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%false = OpConstantFalse %bool
|
||||
%uint = OpTypeInt 32 0
|
||||
%int = OpTypeInt 32 1
|
||||
%uint_42 = OpConstant %uint 42
|
||||
%int_42 = OpConstant %int 42
|
||||
%13 = OpTypeFunction %uint
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%uint_4 = OpConstant %uint 4
|
||||
%uint_5 = OpConstant %uint 5
|
||||
%uint_6 = OpConstant %uint 6
|
||||
%uint_7 = OpConstant %uint 7
|
||||
%uint_8 = OpConstant %uint 8
|
||||
%uint_10 = OpConstant %uint 10
|
||||
%uint_20 = OpConstant %uint 20
|
||||
%uint_30 = OpConstant %uint 30
|
||||
%uint_40 = OpConstant %uint 40
|
||||
%uint_50 = OpConstant %uint 50
|
||||
%uint_90 = OpConstant %uint 90
|
||||
%uint_99 = OpConstant %uint 99
|
||||
%_ptr_Private_uint = OpTypePointer Private %uint
|
||||
%var = OpVariable %_ptr_Private_uint Private
|
||||
%uint_999 = OpConstant %uint 999
|
||||
%100 = OpFunction %void None %3
|
||||
%10 = OpLabel
|
||||
OpBranch %20
|
||||
%20 = OpLabel
|
||||
OpLoopMerge %99 %20 None
|
||||
OpBranch %30
|
||||
%30 = OpLabel
|
||||
OpBranchConditional %5 %20 %99
|
||||
%99 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
; Test: SpvParserFunctionVarTest_EmitStatement_Phi_ValueFromBlockNotInBlockOrderIgnored.spvasm
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||||
; Bound: 501
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical Simple
|
||||
OpEntryPoint Fragment %100 "main"
|
||||
OpExecutionMode %100 OriginUpperLeft
|
||||
%void = OpTypeVoid
|
||||
%2 = OpTypeFunction %void
|
||||
%bool = OpTypeBool
|
||||
%float = OpTypeFloat 32
|
||||
%uint = OpTypeInt 32 0
|
||||
%int = OpTypeInt 32 1
|
||||
%_ptr_Function_bool = OpTypePointer Function %bool
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%true = OpConstantTrue %bool
|
||||
%false = OpConstantFalse %bool
|
||||
%float_0 = OpConstant %float 0
|
||||
%float_1_5 = OpConstant %float 1.5
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%int_n1 = OpConstant %int -1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_3 = OpConstant %int 3
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%uint_4 = OpConstant %uint 4
|
||||
%uint_5 = OpConstant %uint 5
|
||||
%v2int = OpTypeVector %int 2
|
||||
%v2float = OpTypeVector %float 2
|
||||
%mat3v2float = OpTypeMatrix %v2float 3
|
||||
%32 = OpConstantNull %v2int
|
||||
%_arr_uint_uint_2 = OpTypeArray %uint %uint_2
|
||||
%_struct_34 = OpTypeStruct %uint %float %_arr_uint_uint_2
|
||||
%float_42 = OpConstant %float 42
|
||||
%36 = OpUndef %bool
|
||||
%100 = OpFunction %void None %2
|
||||
%10 = OpLabel
|
||||
OpBranch %30
|
||||
%20 = OpLabel
|
||||
%499 = OpFAdd %float %float_42 %float_42
|
||||
%500 = OpFAdd %float %499 %float_42
|
||||
OpBranch %25
|
||||
%25 = OpLabel
|
||||
OpBranch %80
|
||||
%30 = OpLabel
|
||||
OpLoopMerge %90 %80 None
|
||||
OpBranchConditional %36 %90 %40
|
||||
%40 = OpLabel
|
||||
OpBranch %90
|
||||
%80 = OpLabel
|
||||
%81 = OpPhi %float %500 %25
|
||||
OpBranch %30
|
||||
%90 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
; Test: SpvParserTest_ValueFromBlockNotInBlockOrder.spvasm
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos SPIR-V Tools Assembler; 0
|
||||
; Bound: 501
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
OpMemoryModel Logical Simple
|
||||
OpEntryPoint Fragment %100 "main"
|
||||
OpExecutionMode %100 OriginUpperLeft
|
||||
%void = OpTypeVoid
|
||||
%2 = OpTypeFunction %void
|
||||
%bool = OpTypeBool
|
||||
%uint = OpTypeInt 32 0
|
||||
%int = OpTypeInt 32 1
|
||||
%float = OpTypeFloat 32
|
||||
%v2bool = OpTypeVector %bool 2
|
||||
%v2uint = OpTypeVector %uint 2
|
||||
%v2int = OpTypeVector %int 2
|
||||
%v2float = OpTypeVector %float 2
|
||||
%float_42 = OpConstant %float 42
|
||||
%13 = OpUndef %bool
|
||||
%100 = OpFunction %void None %2
|
||||
%10 = OpLabel
|
||||
OpBranch %30
|
||||
%20 = OpLabel
|
||||
%499 = OpFAdd %float %float_42 %float_42
|
||||
%500 = OpFAdd %float %499 %float_42
|
||||
OpBranch %25
|
||||
%25 = OpLabel
|
||||
OpBranch %80
|
||||
%30 = OpLabel
|
||||
OpLoopMerge %90 %80 None
|
||||
OpBranchConditional %13 %90 %40
|
||||
%40 = OpLabel
|
||||
OpBranch %90
|
||||
%80 = OpLabel
|
||||
%81 = OpFMul %float %500 %float_42
|
||||
OpBranch %30
|
||||
%90 = OpLabel
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user