diff options
author | Rohan Garg <rohan.garg@intel.com> | 2022-07-19 11:40:04 +0200 |
---|---|---|
committer | Jordan Justen <jordan.l.justen@intel.com> | 2024-03-29 23:35:35 -0700 |
commit | 7e4b94a39944be33b0cec6e1b9a847ad600686ee (patch) | |
tree | d0bf9277e9768ac507baa8c40d43f2293e37b5bf | |
parent | c45a2bedf3dcc1c1c341e7b9d44f9e72fa68e88d (diff) |
intel/brw: Lower DWORD scattered read writes to lsc
Rework:
* Francisco Jerez: Rebase on 07b9bfacc789 ("intel/compiler: Move
logical-send lowering to a separate file")
* Jordan: Move SHADER_OPCODE_DWORD_SCATTERED_*_LOGICAL from previous
patch, as it seems to make more sense here.
* Jordan: Change `devinfo->has_lsc` ?: to if/else as suggested by idr
Signed-off-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
-rw-r--r-- | src/intel/compiler/brw_lower_logical_sends.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/intel/compiler/brw_lower_logical_sends.cpp b/src/intel/compiler/brw_lower_logical_sends.cpp index 45c5455e3e6..63d6f8b97ab 100644 --- a/src/intel/compiler/brw_lower_logical_sends.cpp +++ b/src/intel/compiler/brw_lower_logical_sends.cpp @@ -1762,6 +1762,7 @@ lower_lsc_surface_logical_send(const fs_builder &bld, fs_inst *inst) break; } case SHADER_OPCODE_BYTE_SCATTERED_READ_LOGICAL: + case SHADER_OPCODE_DWORD_SCATTERED_READ_LOGICAL: num_components = 1; has_dest = true; inst->desc = lsc_msg_desc(devinfo, LSC_OP_LOAD, @@ -1772,6 +1773,7 @@ lower_lsc_surface_logical_send(const fs_builder &bld, fs_inst *inst) LSC_CACHE(devinfo, LOAD, L1STATE_L3MOCS)); break; case SHADER_OPCODE_BYTE_SCATTERED_WRITE_LOGICAL: + case SHADER_OPCODE_DWORD_SCATTERED_WRITE_LOGICAL: num_components = 1; has_dest = false; inst->desc = lsc_msg_desc(devinfo, LSC_OP_STORE, @@ -2797,14 +2799,14 @@ brw_fs_lower_logical_sends(fs_visitor &s) case SHADER_OPCODE_UNTYPED_ATOMIC_LOGICAL: case SHADER_OPCODE_BYTE_SCATTERED_READ_LOGICAL: case SHADER_OPCODE_BYTE_SCATTERED_WRITE_LOGICAL: - if (devinfo->has_lsc) { - lower_lsc_surface_logical_send(ibld, inst); - break; - } - FALLTHROUGH; - case SHADER_OPCODE_DWORD_SCATTERED_READ_LOGICAL: case SHADER_OPCODE_DWORD_SCATTERED_WRITE_LOGICAL: + if (devinfo->has_lsc) + lower_lsc_surface_logical_send(ibld, inst); + else + lower_surface_logical_send(ibld, inst); + break; + case SHADER_OPCODE_TYPED_SURFACE_READ_LOGICAL: case SHADER_OPCODE_TYPED_SURFACE_WRITE_LOGICAL: case SHADER_OPCODE_TYPED_ATOMIC_LOGICAL: |