mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 13:10:10 +01:00
pan/bi: Respect shift when printing immediates
We allow packing multiple immediates in, but we were missing this in the print. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4276>
This commit is contained in:
parent
3f786ed10b
commit
11bccb0564
3 changed files with 11 additions and 2 deletions
|
|
@ -166,7 +166,7 @@ bi_print_index(FILE *fp, bi_instruction *ins, unsigned index)
|
|||
else if (index & BIR_INDEX_UNIFORM)
|
||||
fprintf(fp, "u%u", index & ~BIR_INDEX_UNIFORM);
|
||||
else if (index & BIR_INDEX_CONSTANT)
|
||||
fprintf(fp, "#0x%" PRIx64, ins->constant.u64);
|
||||
fprintf(fp, "#0x%" PRIx64, bi_get_immediate(ins, index));
|
||||
else if (index & BIR_INDEX_ZERO)
|
||||
fprintf(fp, "#0");
|
||||
else if (index & BIR_IS_REG)
|
||||
|
|
|
|||
|
|
@ -136,3 +136,11 @@ bi_bytemask_of_read_components(bi_instruction *ins, unsigned node)
|
|||
|
||||
return mask;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
bi_get_immediate(bi_instruction *ins, unsigned index)
|
||||
{
|
||||
assert(index & BIR_INDEX_CONSTANT);
|
||||
unsigned shift = index & ~BIR_INDEX_CONSTANT;
|
||||
return ins->constant.u64 >> shift;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -394,7 +394,7 @@ bi_remove_instruction(bi_instruction *ins)
|
|||
*
|
||||
* Fixed register: do not allocate register, do not collect $200.
|
||||
* Uniform: access a uniform register given by low bits.
|
||||
* Constant: access the specified constant
|
||||
* Constant: access the specified constant (specifies a bit offset / shift)
|
||||
* Zero: special cased to avoid wasting a constant
|
||||
* Passthrough: a bifrost_packed_src to passthrough T/T0/T1
|
||||
*/
|
||||
|
|
@ -537,6 +537,7 @@ uint16_t bi_from_bytemask(uint16_t bytemask, unsigned bytes);
|
|||
unsigned bi_get_component_count(bi_instruction *ins, unsigned s);
|
||||
unsigned bi_load32_components(bi_instruction *ins);
|
||||
uint16_t bi_bytemask_of_read_components(bi_instruction *ins, unsigned node);
|
||||
uint64_t bi_get_immediate(bi_instruction *ins, unsigned index);
|
||||
|
||||
/* BIR passes */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue