replace _mesa_logbase2 with util_logbase2
[mesa.git] / src / intel / compiler / brw_eu_compact.c
index 7c42aeec3dd65a06e5b83dd676318c267b34dfd9..45e158fb2a62697e04997de904bd5ac886419154 100644 (file)
@@ -1413,6 +1413,20 @@ compact_immediate(const struct gen_device_info *devinfo,
                   enum brw_reg_type type, unsigned imm)
 {
    if (devinfo->gen >= 12) {
+      /* 16-bit immediates need to be replicated through the 32-bit immediate
+       * field
+       */
+      switch (type) {
+      case BRW_REGISTER_TYPE_W:
+      case BRW_REGISTER_TYPE_UW:
+      case BRW_REGISTER_TYPE_HF:
+         if ((imm >> 16) != (imm & 0xffff))
+            return -1;
+         break;
+      default:
+         break;
+      }
+
       switch (type) {
       case BRW_REGISTER_TYPE_F:
          /* We get the high 12-bits as-is; rest must be zero */
@@ -1453,7 +1467,7 @@ compact_immediate(const struct gen_device_info *devinfo,
       case BRW_REGISTER_TYPE_UQ:
       case BRW_REGISTER_TYPE_B:
       case BRW_REGISTER_TYPE_UB:
-         unreachable("not reached");
+         return -1;
       }
    } else {
       /* We get the low 12 bits as-is; 13th is replicated */