From: Lei Zhang Date: Mon, 16 Dec 2019 22:21:13 +0000 (-0800) Subject: [spirv] Re-enable nested loop (de)serialization test X-Git-Tag: llvmorg-11-init~1466^2~59 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=659150b570e873313536dc0df1f75cce912305b3;p=platform%2Fupstream%2Fllvm.git [spirv] Re-enable nested loop (de)serialization test PiperOrigin-RevId: 285849308 --- diff --git a/mlir/test/Dialect/SPIRV/Serialization/loop.mlir b/mlir/test/Dialect/SPIRV/Serialization/loop.mlir index e89708f..84c5ec3 100644 --- a/mlir/test/Dialect/SPIRV/Serialization/loop.mlir +++ b/mlir/test/Dialect/SPIRV/Serialization/loop.mlir @@ -105,108 +105,109 @@ spv.module "Logical" "GLSL450" { spv.ExecutionMode @loop_kernel "LocalSize", 1, 1, 1 } attributes {capabilities = ["Shader"], extensions = ["SPV_KHR_storage_buffer_storage_class"]} -// TODO(antiagainst): re-enable this after fixing the assertion failure. +// ----- + // Nested loop -//spv.module "Logical" "GLSL450" { +spv.module "Logical" "GLSL450" { // for (int i = 0; i < count; ++i) { // for (int j = 0; j < count; ++j) { } // } - //func @loop(%count : i32) -> () { - //%zero = spv.constant 0: i32 - //%one = spv.constant 1: i32 - //%ivar = spv.Variable init(%zero) : !spv.ptr - //%jvar = spv.Variable init(%zero) : !spv.ptr - -// TOCHECK: spv.Branch ^bb1 -// TOCHECK-NEXT: ^bb1: -// TOCHECK-NEXT: spv.loop - //spv.loop { -// TOCHECK-NEXT: spv.Branch ^bb1 - //spv.Branch ^header - -// TOCHECK-NEXT: ^bb1: - //^header: -// TOCHECK-NEXT: spv.Load - //%ival0 = spv.Load "Function" %ivar : i32 -// TOCHECK-NEXT: spv.SLessThan - //%icmp = spv.SLessThan %ival0, %count : i32 -// TOCHECK-NEXT: spv.BranchConditional %{{.*}}, ^bb2, ^bb5 - //spv.BranchConditional %icmp, ^body, ^merge - -// TOCHECK-NEXT: ^bb2: - //^body: -// TOCHECK-NEXT: spv.constant 0 -// TOCHECK-NEXT: spv.Store - //spv.Store "Function" %jvar, %zero : i32 -// TOCHECK-NEXT: spv.Branch ^bb3 -// TOCHECK-NEXT: ^bb3: -// TOCHECK-NEXT: spv.loop - //spv.loop { -// TOCHECK-NEXT: spv.Branch ^bb1 - //spv.Branch ^header - -// TOCHECK-NEXT: ^bb1: - //^header: -// TOCHECK-NEXT: spv.Load - //%jval0 = spv.Load "Function" %jvar : i32 -// TOCHECK-NEXT: spv.SLessThan - //%jcmp = spv.SLessThan %jval0, %count : i32 -// TOCHECK-NEXT: spv.BranchConditional %{{.*}}, ^bb2, ^bb4 - //spv.BranchConditional %jcmp, ^body, ^merge - -// TOCHECK-NEXT: ^bb2: - //^body: + func @loop(%count : i32) -> () { + %zero = spv.constant 0: i32 + %one = spv.constant 1: i32 + %ivar = spv.Variable init(%zero) : !spv.ptr + %jvar = spv.Variable init(%zero) : !spv.ptr + +// CHECK: spv.Branch ^bb1 +// CHECK-NEXT: ^bb1: +// CHECK-NEXT: spv.loop + spv.loop { +// CHECK-NEXT: spv.Branch ^bb1 + spv.Branch ^header + +// CHECK-NEXT: ^bb1: + ^header: +// CHECK-NEXT: spv.Load + %ival0 = spv.Load "Function" %ivar : i32 +// CHECK-NEXT: spv.SLessThan + %icmp = spv.SLessThan %ival0, %count : i32 +// CHECK-NEXT: spv.BranchConditional %{{.*}}, ^bb2, ^bb5 + spv.BranchConditional %icmp, ^body, ^merge + +// CHECK-NEXT: ^bb2: + ^body: +// CHECK-NEXT: spv.constant 0 +// CHECK-NEXT: spv.Store + spv.Store "Function" %jvar, %zero : i32 +// CHECK-NEXT: spv.Branch ^bb3 +// CHECK-NEXT: ^bb3: +// CHECK-NEXT: spv.loop + spv.loop { +// CHECK-NEXT: spv.Branch ^bb1 + spv.Branch ^header + +// CHECK-NEXT: ^bb1: + ^header: +// CHECK-NEXT: spv.Load + %jval0 = spv.Load "Function" %jvar : i32 +// CHECK-NEXT: spv.SLessThan + %jcmp = spv.SLessThan %jval0, %count : i32 +// CHECK-NEXT: spv.BranchConditional %{{.*}}, ^bb2, ^bb4 + spv.BranchConditional %jcmp, ^body, ^merge + +// CHECK-NEXT: ^bb2: + ^body: // Do nothing -// TOCHECK-NEXT: spv.Branch ^bb3 - //spv.Branch ^continue - -// TOCHECK-NEXT: ^bb3: - //^continue: -// TOCHECK-NEXT: spv.Load - //%jval1 = spv.Load "Function" %jvar : i32 -// TOCHECK-NEXT: spv.constant 1 -// TOCHECK-NEXT: spv.IAdd - //%add = spv.IAdd %jval1, %one : i32 -// TOCHECK-NEXT: spv.Store - //spv.Store "Function" %jvar, %add : i32 -// TOCHECK-NEXT: spv.Branch ^bb1 - //spv.Branch ^header - -// TOCHECK-NEXT: ^bb4: - //^merge: -// TOCHECK-NEXT: spv._merge - //spv._merge - //} // end inner loop - -// TOCHECK: spv.Branch ^bb4 - //spv.Branch ^continue - -// TOCHECK-NEXT: ^bb4: - //^continue: -// TOCHECK-NEXT: spv.Load - //%ival1 = spv.Load "Function" %ivar : i32 -// TOCHECK-NEXT: spv.constant 1 -// TOCHECK-NEXT: spv.IAdd - //%add = spv.IAdd %ival1, %one : i32 -// TOCHECK-NEXT: spv.Store - //spv.Store "Function" %ivar, %add : i32 -// TOCHECK-NEXT: spv.Branch ^bb1 - //spv.Branch ^header - -// TOCHECK-NEXT: ^bb5: -// TOCHECK-NEXT: spv._merge - //^merge: - //spv._merge - //} // end outer loop - //spv.Return - //} - - //func @main() -> () { - //spv.Return - //} - //spv.EntryPoint "GLCompute" @main -//} attributes { - //capabilities = ["Shader"] -//} +// CHECK-NEXT: spv.Branch ^bb3 + spv.Branch ^continue + +// CHECK-NEXT: ^bb3: + ^continue: +// CHECK-NEXT: spv.Load + %jval1 = spv.Load "Function" %jvar : i32 +// CHECK-NEXT: spv.constant 1 +// CHECK-NEXT: spv.IAdd + %add = spv.IAdd %jval1, %one : i32 +// CHECK-NEXT: spv.Store + spv.Store "Function" %jvar, %add : i32 +// CHECK-NEXT: spv.Branch ^bb1 + spv.Branch ^header + +// CHECK-NEXT: ^bb4: + ^merge: +// CHECK-NEXT: spv._merge + spv._merge + } // end inner loop + +// CHECK: spv.Branch ^bb4 + spv.Branch ^continue + +// CHECK-NEXT: ^bb4: + ^continue: +// CHECK-NEXT: spv.Load + %ival1 = spv.Load "Function" %ivar : i32 +// CHECK-NEXT: spv.constant 1 +// CHECK-NEXT: spv.IAdd + %add = spv.IAdd %ival1, %one : i32 +// CHECK-NEXT: spv.Store + spv.Store "Function" %ivar, %add : i32 +// CHECK-NEXT: spv.Branch ^bb1 + spv.Branch ^header + +// CHECK-NEXT: ^bb5: +// CHECK-NEXT: spv._merge + ^merge: + spv._merge + } // end outer loop + spv.Return + } + + func @main() -> () { + spv.Return + } + spv.EntryPoint "GLCompute" @main +} attributes { + capabilities = ["Shader"] +}