intel/compiler: relax brw_eu_validate for byte raw movs
authorJose Maria Casanova Crespo <jmcasanova@igalia.com>
Mon, 9 Jul 2018 00:00:34 +0000 (02:00 +0200)
committerJose Maria Casanova Crespo <jmcasanova@igalia.com>
Mon, 9 Jul 2018 22:14:49 +0000 (00:14 +0200)
When the destination is a BYTE type allow raw movs
even if the stride is not exact multiple of destination
type and exec type, execution type is Word and its size is 2.

This restriction was only allowing stride==2 destinations
for 8-bit types.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/compiler/brw_eu_validate.c

index 29d1fe46f71a995c291a061eb0333a4b89aca582..a25010b225ce8fe8ac95d875f8e4bba50468725f 100644 (file)
@@ -472,9 +472,11 @@ general_restrictions_based_on_operand_types(const struct gen_device_info *devinf
       dst_type_size = 8;
 
    if (exec_type_size > dst_type_size) {
-      ERROR_IF(dst_stride * dst_type_size != exec_type_size,
-               "Destination stride must be equal to the ratio of the sizes of "
-               "the execution data type to the destination type");
+      if (!(dst_type_is_byte && inst_is_raw_move(devinfo, inst))) {
+         ERROR_IF(dst_stride * dst_type_size != exec_type_size,
+                  "Destination stride must be equal to the ratio of the sizes "
+                  "of the execution data type to the destination type");
+      }
 
       unsigned subreg = brw_inst_dst_da1_subreg_nr(devinfo, inst);