Mesa (master): intel/fs: Assert if lower_source_modifiers converts 32x16 to 32x32 multiplication

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Aug 10 20:42:37 UTC 2020


Module: Mesa
Branch: master
Commit: ee06e47c5b1d7e5132435ba4ed7be5a2b16bc77e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ee06e47c5b1d7e5132435ba4ed7be5a2b16bc77e

Author: Mark Janes <markjanes at swizzler.org>
Date:   Fri Aug  7 16:35:32 2020 -0700

intel/fs: Assert if lower_source_modifiers converts 32x16 to 32x32 multiplication

Lowering source modifiers will convert a 16bit source to a 32bit
value.  In the case of integer multiplication, this will reverse
previous lowering performed by lower_mul_dword_inst.

Assert to prevent an illegal DxD operation (and GPU hang).

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

 src/intel/compiler/brw_fs_lower_regioning.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/intel/compiler/brw_fs_lower_regioning.cpp b/src/intel/compiler/brw_fs_lower_regioning.cpp
index 9db2c540afa..8ae52dfef96 100644
--- a/src/intel/compiler/brw_fs_lower_regioning.cpp
+++ b/src/intel/compiler/brw_fs_lower_regioning.cpp
@@ -256,6 +256,12 @@ namespace brw {
    lower_src_modifiers(fs_visitor *v, bblock_t *block, fs_inst *inst, unsigned i)
    {
       assert(inst->components_read(i) == 1);
+      assert(v->devinfo->has_integer_dword_mul ||
+             inst->opcode != BRW_OPCODE_MUL ||
+             brw_reg_type_is_floating_point(get_exec_type(inst)) ||
+             MIN2(type_sz(inst->src[0].type), type_sz(inst->src[1].type)) >= 4 ||
+             type_sz(inst->src[i].type) == get_exec_type_size(inst));
+
       const fs_builder ibld(v, block, inst);
       const fs_reg tmp = ibld.vgrf(get_exec_type(inst));
 



More information about the mesa-commit mailing list