diff --git a/src/intel/compiler/brw_fs_builder.h b/src/intel/compiler/brw_fs_builder.h index 0c1b6f5d6c7..1000d956d6f 100644 --- a/src/intel/compiler/brw_fs_builder.h +++ b/src/intel/compiler/brw_fs_builder.h @@ -514,6 +514,16 @@ namespace brw { right = horiz_offset(tmp, 8 + 4); set_condmod(mod, ubld.emit(opcode, right, left, right)); } + + if (dispatch_width() > 16) { + left = component(tmp, 16 + 3); + right = horiz_offset(tmp, 16 + 4); + set_condmod(mod, ubld.emit(opcode, right, left, right)); + + left = component(tmp, 24 + 3); + right = horiz_offset(tmp, 24 + 4); + set_condmod(mod, ubld.emit(opcode, right, left, right)); + } } if (cluster_size > 8 && dispatch_width() > 8) { @@ -521,6 +531,19 @@ namespace brw { src_reg left = component(tmp, 7); dst_reg right = horiz_offset(tmp, 8); set_condmod(mod, ubld.emit(opcode, right, left, right)); + + if (dispatch_width() > 16) { + left = component(tmp, 16 + 7); + right = horiz_offset(tmp, 16 + 8); + set_condmod(mod, ubld.emit(opcode, right, left, right)); + } + } + + if (cluster_size > 16 && dispatch_width() > 16) { + const fs_builder ubld = exec_all().group(16, 0); + src_reg left = component(tmp, 15); + dst_reg right = horiz_offset(tmp, 16); + set_condmod(mod, ubld.emit(opcode, right, left, right)); } }