nir: Add AMD-specific byte and lane permute intrinsics.
These map directly to v_perm_b32 and v_permlane_b32. Unfortunately there is no corresponding NIR opcode or intrinsics, and it's too tedious to puzzle these things together from the existing NIR instructions. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Tony Wasserka <tony.wasserka@gmx.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11072>
This commit is contained in:
@@ -294,6 +294,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_quad_swap_horizontal:
|
||||
case nir_intrinsic_quad_swap_vertical:
|
||||
case nir_intrinsic_quad_swap_diagonal:
|
||||
case nir_intrinsic_byte_permute_amd:
|
||||
case nir_intrinsic_load_deref:
|
||||
case nir_intrinsic_load_shared:
|
||||
case nir_intrinsic_load_global:
|
||||
@@ -496,6 +497,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_ballot_bit_count_inclusive:
|
||||
case nir_intrinsic_write_invocation_amd:
|
||||
case nir_intrinsic_mbcnt_amd:
|
||||
case nir_intrinsic_lane_permute_16_amd:
|
||||
case nir_intrinsic_elect:
|
||||
case nir_intrinsic_load_tlb_color_v3d:
|
||||
case nir_intrinsic_load_tess_rel_patch_id_amd:
|
||||
|
@@ -429,6 +429,10 @@ intrinsic("masked_swizzle_amd", src_comp=[0], dest_comp=0, bit_sizes=src0,
|
||||
intrinsic("write_invocation_amd", src_comp=[0, 0, 1], dest_comp=0, bit_sizes=src0,
|
||||
flags=[CAN_ELIMINATE])
|
||||
intrinsic("mbcnt_amd", src_comp=[1], dest_comp=1, bit_sizes=[32], flags=[CAN_ELIMINATE])
|
||||
# Compiled to v_perm_b32. src = [ in_bytes_hi, in_bytes_lo, selector ]
|
||||
intrinsic("byte_permute_amd", src_comp=[1, 1, 1], dest_comp=1, bit_sizes=[32], flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
# Compiled to v_permlane16_b32. src = [ value, lanesel_lo, lanesel_hi ]
|
||||
intrinsic("lane_permute_16_amd", src_comp=[1, 1, 1], dest_comp=1, bit_sizes=[32], flags=[CAN_ELIMINATE])
|
||||
|
||||
# Basic Geometry Shader intrinsics.
|
||||
#
|
||||
|
Reference in New Issue
Block a user