diff --git a/src/intel/compiler/jay/jay_lower_post_ra.c b/src/intel/compiler/jay/jay_lower_post_ra.c index 945e9cceaf9..b44c977e6a8 100644 --- a/src/intel/compiler/jay/jay_lower_post_ra.c +++ b/src/intel/compiler/jay/jay_lower_post_ra.c @@ -127,6 +127,7 @@ lower(jay_builder *b, jay_inst *I) case JAY_OPCODE_DESWIZZLE: { unsigned size = jay_deswizzle_size(I); + assert(b->shader->partition.blocks[GPR][0].start == 1); /* Odd: copy both halves to contiguous pair after payload */ for (unsigned i = 0; i < (size / 2); ++i) { diff --git a/src/intel/compiler/jay/jay_to_binary.c b/src/intel/compiler/jay/jay_to_binary.c index 62b9576ec9c..a0431d78d78 100644 --- a/src/intel/compiler/jay/jay_to_binary.c +++ b/src/intel/compiler/jay/jay_to_binary.c @@ -362,11 +362,13 @@ emit(struct brw_codegen *p, brw_BFN(p, dst, SRC(0), SRC(1), SRC(2), brw_imm_ud(jay_bfn_ctrl(I))); break; - case JAY_OPCODE_DESWIZZLE_ODD: - bool hi = simd_offs ? true : jay_deswizzle_odd_src2_hi(I); + case JAY_OPCODE_DESWIZZLE_ODD: { + bool hi = simd_offs == 0 ? true : jay_deswizzle_odd_src2_hi(I); + brw_set_default_group(p, 0); brw_MOV(p, dst, byte_offset(to_brw_reg(f, I, simd_offs, 0, false), hi ? 64 : 0)); break; + } case JAY_OPCODE_DESWIZZLE_EVEN: brw_set_default_exec_size(p, BRW_EXECUTE_16);