OSDN Git Service

Revert "spirv: consider bitsize when handling OpSwitch cases"
authorMark Janes <mark.a.janes@intel.com>
Thu, 21 Dec 2017 20:15:40 +0000 (12:15 -0800)
committerMark Janes <mark.a.janes@intel.com>
Thu, 21 Dec 2017 20:15:40 +0000 (12:15 -0800)
This reverts commit 9702fac68e8bd07be8871f7925d7f9fb98da3699, which
hangs vulkancts and crucible on all platforms.

The patch is being reverted because it disables continuous integration
testing.  The patch from bug 104359 does not apply to master.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104359

src/compiler/spirv/vtn_cfg.c

index 9c4cbe2..8582c4f 100644 (file)
@@ -513,14 +513,13 @@ vtn_cfg_walk_blocks(struct vtn_builder *b, struct list_head *cf_list,
                      "Selector of OpSelect must have a type of OpTypeInt");
 
          bool is_default = true;
-         const uint bitsize = nir_alu_type_get_type_size(cond_type);
          for (const uint32_t *w = block->branch + 2; w < branch_end;) {
             uint64_t literal = 0;
             if (!is_default) {
-               if (bitsize <= 32) {
+               if (nir_alu_type_get_type_size(cond_type) <= 32) {
                   literal = *(w++);
                } else {
-                  assert(bitsize == 64);
+                  assert(nir_alu_type_get_type_size(cond_type) == 64);
                   literal = vtn_u64_literal(w);
                   w += 2;
                }
@@ -545,7 +544,7 @@ vtn_cfg_walk_blocks(struct vtn_builder *b, struct list_head *cf_list,
          /* Finally, we walk over all of the cases one more time and put
           * them in fall-through order.
           */
-         for (const uint32_t *w = block->branch + 2; w < branch_end;) {
+         for (const uint32_t *w = block->branch + 2; w < branch_end; w += 2) {
             struct vtn_block *case_block =
                vtn_value(b, *w, vtn_value_type_block)->block;
 
@@ -555,13 +554,6 @@ vtn_cfg_walk_blocks(struct vtn_builder *b, struct list_head *cf_list,
             vtn_assert(case_block->switch_case);
 
             vtn_order_case(swtch, case_block->switch_case);
-
-            if (bitsize <= 32) {
-               w += 2;
-            } else {
-               assert(bitsize == 64);
-               w += 3;
-            }
          }
 
          enum vtn_branch_type branch_type =