mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-12 01:20:17 +01:00
nir/builder: Teach nir_pack_bits and nir_unpack_bits about 32_4x8
Also teach it how to pack and unpack 32-bits to or from 32-bits. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24741>
This commit is contained in:
parent
25743209c4
commit
52ee4cf229
1 changed files with 15 additions and 5 deletions
|
|
@ -1122,8 +1122,13 @@ nir_pack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
|||
break;
|
||||
|
||||
case 32:
|
||||
if (src->bit_size == 16)
|
||||
return nir_pack_32_2x16(b, src);
|
||||
switch (src->bit_size) {
|
||||
case 32: return src;
|
||||
case 16: return nir_pack_32_2x16(b, src);
|
||||
case 8: return nir_pack_32_4x8(b, src);
|
||||
default: break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -1144,7 +1149,7 @@ static inline nir_def *
|
|||
nir_unpack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
||||
{
|
||||
assert(src->num_components == 1);
|
||||
assert(src->bit_size > dest_bit_size);
|
||||
assert(src->bit_size >= dest_bit_size);
|
||||
const unsigned dest_num_components = src->bit_size / dest_bit_size;
|
||||
assert(dest_num_components <= NIR_MAX_VEC_COMPONENTS);
|
||||
|
||||
|
|
@ -1161,8 +1166,13 @@ nir_unpack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
|||
break;
|
||||
|
||||
case 32:
|
||||
if (dest_bit_size == 16)
|
||||
return nir_unpack_32_2x16(b, src);
|
||||
switch (dest_bit_size) {
|
||||
case 32: return src;
|
||||
case 16: return nir_unpack_32_2x16(b, src);
|
||||
case 8: return nir_unpack_32_4x8(b, src);
|
||||
default: break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue