mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-15 17:30:32 +01:00
nir: add ballot_relaxed and as_uniform intrinsics
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27116>
This commit is contained in:
parent
fc9ffb90fd
commit
1cb5bf7009
3 changed files with 11 additions and 0 deletions
|
|
@ -93,6 +93,8 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
|||
/* Intrinsics which are always uniform */
|
||||
case nir_intrinsic_shader_clock:
|
||||
case nir_intrinsic_ballot:
|
||||
case nir_intrinsic_ballot_relaxed:
|
||||
case nir_intrinsic_as_uniform:
|
||||
case nir_intrinsic_read_invocation:
|
||||
case nir_intrinsic_read_first_invocation:
|
||||
case nir_intrinsic_vote_any:
|
||||
|
|
|
|||
|
|
@ -446,6 +446,14 @@ intrinsic("ballot", src_comp=[1], dest_comp=0, flags=[CAN_ELIMINATE])
|
|||
intrinsic("read_invocation", src_comp=[0, 1], dest_comp=0, bit_sizes=src0, flags=[CAN_ELIMINATE])
|
||||
intrinsic("read_first_invocation", src_comp=[0], dest_comp=0, bit_sizes=src0, flags=[CAN_ELIMINATE])
|
||||
|
||||
# Same as ballot, but inactive invocations contribute undefined bits.
|
||||
intrinsic("ballot_relaxed", src_comp=[1], dest_comp=0, flags=[CAN_ELIMINATE])
|
||||
|
||||
# Allows the backend compiler to move this value to an uniform register.
|
||||
# Result is undefined if src is not uniform.
|
||||
# Unlike read_first_invocation, it may be replaced by a divergent move or CSE'd.
|
||||
intrinsic("as_uniform", src_comp=[0], dest_comp=0, bit_sizes=src0, flags=[CAN_ELIMINATE])
|
||||
|
||||
# Returns the value of the first source for the lane where the second source is
|
||||
# true. The second source must be true for exactly one lane.
|
||||
intrinsic("read_invocation_cond_ir3", src_comp=[0, 1], dest_comp=0, flags=[CAN_ELIMINATE])
|
||||
|
|
|
|||
|
|
@ -258,6 +258,7 @@ try_fold_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin,
|
|||
case nir_intrinsic_vote_all:
|
||||
case nir_intrinsic_read_invocation:
|
||||
case nir_intrinsic_read_first_invocation:
|
||||
case nir_intrinsic_as_uniform:
|
||||
case nir_intrinsic_shuffle:
|
||||
case nir_intrinsic_shuffle_xor:
|
||||
case nir_intrinsic_shuffle_up:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue