From 676b874ca9763a7a72b008932434423c213bc463 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Tue, 25 Feb 2025 11:25:57 -0800 Subject: [PATCH] brw: Fix decoding of 3-src destination stride in EU validation Fixes: f1036da3454 ("intel/brw: Add vstride/width/hstride to brw_hw_decoded_inst") Reviewed-by: Ian Romanick Reviewed-by: Rohan Garg Reviewed-by: Kenneth Graunke Part-of: --- src/intel/compiler/brw_eu_validate.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/intel/compiler/brw_eu_validate.c b/src/intel/compiler/brw_eu_validate.c index 6a3f48928b1..48e51f938dc 100644 --- a/src/intel/compiler/brw_eu_validate.c +++ b/src/intel/compiler/brw_eu_validate.c @@ -2419,6 +2419,16 @@ scalar_register_restrictions(const struct brw_isa_info *isa, return error_msg; } +static unsigned +DST_STRIDE_3SRC(unsigned hstride) +{ + switch (hstride) { + case BRW_ALIGN1_3SRC_DST_HORIZONTAL_STRIDE_1: return 1; + case BRW_ALIGN1_3SRC_DST_HORIZONTAL_STRIDE_2: return 2; + } + unreachable("invalid hstride"); +} + static unsigned VSTRIDE_3SRC(unsigned vstride) { @@ -2607,7 +2617,7 @@ brw_hw_decode_inst(const struct brw_isa_info *isa, inst->dst.type = brw_eu_inst_3src_a1_dst_type(devinfo, raw); inst->dst.nr = brw_eu_inst_3src_dst_reg_nr(devinfo, raw); inst->dst.subnr = brw_eu_inst_3src_a1_dst_subreg_nr(devinfo, raw) * 8; - inst->dst.hstride = STRIDE(brw_eu_inst_3src_a1_dst_hstride(devinfo, raw)); + inst->dst.hstride = DST_STRIDE_3SRC(brw_eu_inst_3src_a1_dst_hstride(devinfo, raw)); inst->src[0].file = brw_eu_inst_3src_a1_src0_reg_file(devinfo, raw); inst->src[0].type = brw_eu_inst_3src_a1_src0_type(devinfo, raw);