mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-03 07:48:07 +02:00
hk: use amul instead of imul
lets use do our address arithmetic tricks. preambles helped. Totals: MaxWaves: 53066688 -> 53068928 (+0.00%); split: +0.01%, -0.01% Instrs: 23846587 -> 23794159 (-0.22%); split: -0.24%, +0.02% CodeSize: 170248964 -> 169876998 (-0.22%); split: -0.24%, +0.02% Spills: 66570 -> 66401 (-0.25%); split: -0.53%, +0.27% Fills: 44068 -> 43879 (-0.43%); split: -0.98%, +0.55% Scratch: 404374 -> 403894 (-0.12%); split: -0.18%, +0.06% ALU: 18567924 -> 18510790 (-0.31%); split: -0.33%, +0.02% FSCIB: 18512622 -> 18455472 (-0.31%); split: -0.33%, +0.02% IC: 5255884 -> 5279176 (+0.44%); split: -0.11%, +0.56% GPRs: 3833699 -> 3833127 (-0.01%); split: -0.05%, +0.04% Uniforms: 10531468 -> 10528625 (-0.03%); split: -0.03%, +0.00% Preamble instrs: 10435998 -> 10289152 (-1.41%); split: -1.43%, +0.02% Totals from 6482 (12.00% of 54019) affected shaders: MaxWaves: 5819712 -> 5821952 (+0.04%); split: +0.09%, -0.05% Instrs: 5777505 -> 5725077 (-0.91%); split: -1.01%, +0.10% CodeSize: 42654844 -> 42282878 (-0.87%); split: -0.97%, +0.09% Spills: 23065 -> 22896 (-0.73%); split: -1.53%, +0.79% Fills: 7927 -> 7738 (-2.38%); split: -5.46%, +3.08% Scratch: 310148 -> 309668 (-0.15%); split: -0.23%, +0.08% ALU: 4424867 -> 4367733 (-1.29%); split: -1.39%, +0.10% FSCIB: 4424651 -> 4367501 (-1.29%); split: -1.39%, +0.10% IC: 1144594 -> 1167886 (+2.03%); split: -0.53%, +2.56% GPRs: 620494 -> 619922 (-0.09%); split: -0.33%, +0.24% Uniforms: 1622654 -> 1619811 (-0.18%); split: -0.20%, +0.02% Preamble instrs: 2119640 -> 1972794 (-6.93%); split: -7.03%, +0.10% Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36257>
This commit is contained in:
parent
a60755c015
commit
20bf4a28a2
1 changed files with 7 additions and 7 deletions
|
|
@ -131,7 +131,7 @@ load_descriptor(nir_builder *b, unsigned num_components, unsigned bit_size,
|
|||
binding_layout->dynamic_buffer_index));
|
||||
|
||||
nir_def *root_desc_offset = nir_iadd_imm(
|
||||
b, nir_imul_imm(b, index, sizeof(struct hk_buffer_address)),
|
||||
b, nir_amul_imm(b, index, sizeof(struct hk_buffer_address)),
|
||||
hk_root_descriptor_offset(dynamic_buffers));
|
||||
|
||||
assert(num_components == 4 && bit_size == 32);
|
||||
|
|
@ -158,7 +158,7 @@ load_descriptor(nir_builder *b, unsigned num_components, unsigned bit_size,
|
|||
default: {
|
||||
assert(binding_layout->stride > 0);
|
||||
nir_def *desc_ubo_offset =
|
||||
nir_iadd_imm(b, nir_imul_imm(b, index, binding_layout->stride),
|
||||
nir_iadd_imm(b, nir_amul_imm(b, index, binding_layout->stride),
|
||||
binding_layout->offset + offset_B);
|
||||
|
||||
unsigned desc_align_mul = (1 << (ffs(binding_layout->stride) - 1));
|
||||
|
|
@ -323,7 +323,7 @@ load_image_handle(nir_builder *b, const struct lower_descriptors_ctx *ctx,
|
|||
|
||||
assert(binding_layout->stride > 0);
|
||||
nir_def *desc_offs_B =
|
||||
nir_iadd_imm(b, nir_imul_imm(b, index, binding_layout->stride),
|
||||
nir_iadd_imm(b, nir_amul_imm(b, index, binding_layout->stride),
|
||||
binding_layout->offset + offset_B);
|
||||
|
||||
return nir_bindless_image_agx(b, desc_offs_B, .desc_set = set);
|
||||
|
|
@ -489,7 +489,7 @@ lower_uvs_index(nir_builder *b, nir_intrinsic_instr *intrin, void *data)
|
|||
/* Prefix sum to find the compacted offset */
|
||||
nir_def *idx = nir_bit_count(b, nir_iand_imm(b, flags, bit - 1));
|
||||
nir_def *addr = nir_iadd(
|
||||
b, base, nir_imul_imm(b, nir_u2u64(b, idx), sizeof(uint64_t)));
|
||||
b, base, nir_amul_imm(b, nir_u2u64(b, idx), sizeof(uint64_t)));
|
||||
|
||||
/* The above returns garbage if the query isn't actually enabled, handle
|
||||
* that case.
|
||||
|
|
@ -698,7 +698,7 @@ lower_tex(nir_builder *b, nir_tex_instr *tex,
|
|||
|
||||
assert(binding_layout->stride > 0);
|
||||
nir_def *desc_offs_B = nir_iadd_imm(
|
||||
b, nir_imul_imm(b, idx, binding_layout->stride),
|
||||
b, nir_amul_imm(b, idx, binding_layout->stride),
|
||||
binding_layout->offset + plane_offset_B +
|
||||
offsetof(struct hk_sampled_image_descriptor, sampler));
|
||||
|
||||
|
|
@ -769,7 +769,7 @@ lower_ssbo_resource_index(nir_builder *b, nir_intrinsic_instr *intrin,
|
|||
|
||||
nir_def *dynamic_binding_offset =
|
||||
nir_iadd_imm(b,
|
||||
nir_imul_imm(b, dynamic_buffer_start,
|
||||
nir_amul_imm(b, dynamic_buffer_start,
|
||||
sizeof(struct hk_buffer_address)),
|
||||
hk_root_descriptor_offset(dynamic_buffers));
|
||||
|
||||
|
|
@ -787,7 +787,7 @@ lower_ssbo_resource_index(nir_builder *b, nir_intrinsic_instr *intrin,
|
|||
binding_addr = nir_ior_imm(b, binding_addr, (uint64_t)binding_stride << 56);
|
||||
|
||||
const uint32_t binding_size = binding_layout->array_size * binding_stride;
|
||||
nir_def *offset_in_binding = nir_imul_imm(b, index, binding_stride);
|
||||
nir_def *offset_in_binding = nir_amul_imm(b, index, binding_stride);
|
||||
|
||||
nir_def *addr = nir_vec4(b, nir_unpack_64_2x32_split_x(b, binding_addr),
|
||||
nir_unpack_64_2x32_split_y(b, binding_addr),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue