[spirv] Re-enable nested loop (de)serialization test
authorLei Zhang <antiagainst@google.com>
Mon, 16 Dec 2019 22:21:13 +0000 (14:21 -0800)
committerA. Unique TensorFlower <gardener@tensorflow.org>
Mon, 16 Dec 2019 22:21:52 +0000 (14:21 -0800)
PiperOrigin-RevId: 285849308

mlir/test/Dialect/SPIRV/Serialization/loop.mlir

index e89708f..84c5ec3 100644 (file)
@@ -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<i32, Function>
-    //%jvar = spv.Variable init(%zero) : !spv.ptr<i32, Function>
-
-// 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<i32, Function>
+    %jvar = spv.Variable init(%zero) : !spv.ptr<i32, Function>
+
+// 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"]
+}