mesa/src/nouveau/codegen
Connor Abbott 4282386311 nir/spirv: Add inverse_ballot intrinsic
This is actually a no-op on AMD, so we really don't want to lower it to
something more complicated.  There may be a more efficient way to do
this on Intel too. In addition, in the future we'll want to use this for
lowering boolean reduce operations, where the inverse ballot will
operate on the backend's "natural" ballot type as indicated by
options->ballot_bit_size, instead of uvec4 as produced by SPIR-V. In
total, there are now three possible lowerings we may have to perform:

- inverse_ballot with source type of uvec4 from SPIR-V to inverse_ballot
with natural source type, when the backend supports inverse_ballot
natively.
- inverse_ballot with source type of uvec4 from SPIR-V to arithmetic,
when the backend doesn't support inverse_ballot.
- inverse_ballot with natural source type from reduce operation, when
the backend doesn't support inverse_ballot.

Previously we just did the second lowering unconditionally in vtn, but
it's just a combination of the first and third. We add support here for
the first and third lowerings in nir_lower_subgroups, instead of simply
moving the second lowering, to avoid unnecessary churn.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25123>
2023-09-20 14:41:18 +00:00
..
lib nouveau: const cleanup 2022-09-16 14:23:47 +00:00
meson.build nv/codegen: Merge from_common into from_nir 2023-08-22 10:42:24 -04:00
nv50_ir.cpp nv/codegen: Use nir_lower_clip 2023-08-19 15:34:28 +00:00
nv50_ir.h nv/codegen: Delete copy and assign 2023-08-26 11:04:02 -04:00
nv50_ir_bb.cpp nv/codegen: Remove Function::buildDefSets 2023-08-22 10:42:24 -04:00
nv50_ir_build_util.cpp nouveau: Drop BuildUtil::DataArray 2023-07-21 02:40:35 +00:00
nv50_ir_build_util.h nouveau: Drop BuildUtil::Location 2023-07-21 02:40:36 +00:00
nv50_ir_driver.h nouveau/codegen: Add a 4th optimization level for MemoryOpts 2023-08-21 14:26:34 +00:00
nv50_ir_emit_gk110.cpp nv/codegen: Delete unused OP_CONSTRAINT 2023-08-22 10:42:24 -04:00
nv50_ir_emit_gm107.cpp gm107/ir: fix SULDP for loads without a known format 2023-07-25 23:15:41 +00:00
nv50_ir_emit_gv100.cpp gv100/ir: noop OP_BAR for now 2022-11-09 21:21:22 +00:00
nv50_ir_emit_gv100.h
nv50_ir_emit_nv50.cpp nv/codegen: Delete unused OP_CONSTRAINT 2023-08-22 10:42:24 -04:00
nv50_ir_emit_nvc0.cpp nv/codegen: Delete unused OP_CONSTRAINT 2023-08-22 10:42:24 -04:00
nv50_ir_from_nir.cpp nir/spirv: Add inverse_ballot intrinsic 2023-09-20 14:41:18 +00:00
nv50_ir_graph.cpp
nv50_ir_graph.h
nv50_ir_inlines.h nv50/ir: add isUnsignedIntType() and isIntType() helpers 2022-09-09 17:32:13 +02:00
nv50_ir_lowering_gm107.cpp
nv50_ir_lowering_gm107.h nv50/ir: resolve -Woverloaded-virtual=1 warnings 2023-06-15 18:48:10 +00:00
nv50_ir_lowering_gv100.cpp
nv50_ir_lowering_gv100.h
nv50_ir_lowering_helper.cpp nv50/ir: handle U8/U16 integers converting to U64 2022-09-09 17:32:30 +02:00
nv50_ir_lowering_helper.h
nv50_ir_lowering_nv50.cpp nv/codegen: Delete OP_WRSV 2023-08-22 10:42:24 -04:00
nv50_ir_lowering_nvc0.cpp nv/codegen: Delete OP_WRSV 2023-08-22 10:42:24 -04:00
nv50_ir_lowering_nvc0.h nv/codegen: Delete OP_WRSV 2023-08-22 10:42:24 -04:00
nv50_ir_peephole.cpp Do explicit cast to suppress clang warnings 2023-09-06 12:38:09 +00:00
nv50_ir_print.cpp nv/codegen: Delete unused OP_CONSTRAINT 2023-08-22 10:42:24 -04:00
nv50_ir_ra.cpp nv50_ir_ra: Delete unused functions 2023-08-22 10:42:24 -04:00
nv50_ir_sched_gm107.h
nv50_ir_serialize.cpp nouveau: Drop tgsi support from nv50_ir_prog_info 2023-07-21 02:40:35 +00:00
nv50_ir_ssa.cpp nouveau: Make getSize return unsigned int 2023-03-17 16:08:33 +00:00
nv50_ir_target.cpp nv/codegen: Delete unused OP_CONSTRAINT 2023-08-22 10:42:24 -04:00
nv50_ir_target.h
nv50_ir_target_gm107.cpp nv/codegen: Delete OP_POW 2023-08-21 15:34:14 +00:00
nv50_ir_target_gm107.h
nv50_ir_target_gv100.cpp
nv50_ir_target_gv100.h
nv50_ir_target_nv50.cpp nv/codegen: Delete OP_WRSV 2023-08-22 10:42:24 -04:00
nv50_ir_target_nv50.h nv50/ir: Remove few nvc0 specific defines from nv50-specific header. 2023-08-16 10:11:45 +00:00
nv50_ir_target_nvc0.cpp nv/codegen: Delete OP_WRSV 2023-08-22 10:42:24 -04:00
nv50_ir_target_nvc0.h
nv50_ir_util.cpp
nv50_ir_util.h nv/codegen: Delete copy and assign 2023-08-26 11:04:02 -04:00