intel/compiler: Remove unreachable() from brw_reg_type.c
authorMatt Turner <mattst88@gmail.com>
Wed, 16 Oct 2019 19:45:55 +0000 (12:45 -0700)
committerMatt Turner <mattst88@gmail.com>
Wed, 30 Oct 2019 18:11:50 +0000 (11:11 -0700)
The EU compaction unit test fuzzes the compaction code by flipping bits.
We use a simple skip_bits() function with a list of reserved bits to
ignore, but for more complex cases like invalid combinations of register
file:type, we need either machinery to check validity or for these
functions to simply inform us whether a combination was valid.

enum brw_reg_type a 4-bit field in brw_reg, so rather than expanding it
with an "INVALID" value, just return -1 and let the caller check for
that.

Scott suggested redefining unreachable() within the unit test to
longjmp() which would allow driver code like this to still use it and
allow the test to handle expected failures like this. If that plan works
out, I plan to revert this.

src/intel/compiler/brw_reg_type.c

index 355553909857a18604ac981fd8ff92cad1943c37..6cf69051ea25edc77e095a79149aea9ec7c5f045 100644 (file)
@@ -287,7 +287,7 @@ brw_hw_type_to_reg_type(const struct gen_device_info *devinfo,
          }
       }
    }
-   unreachable("not reached");
+   return (enum brw_reg_type)-1;
 }
 
 /**
@@ -337,7 +337,7 @@ brw_a16_hw_3src_type_to_reg_type(const struct gen_device_info *devinfo,
          return i;
       }
    }
-   unreachable("not reached");
+   return (enum brw_reg_type)-1;
 }
 
 /**
@@ -357,7 +357,7 @@ brw_a1_hw_3src_type_to_reg_type(const struct gen_device_info *devinfo,
          return i;
       }
    }
-   unreachable("not reached");
+   return (enum brw_reg_type)-1;
 }
 
 /**