mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 16:10:09 +01:00
nir: Add un/pack_32_4x8 opcodes
Complement the existing un/pack_32_2x16 opcodes. These are useful for 8-bit format packing. On Midgard, they are equivalent to just a 32-bit move, but other GPUs could lower to other packs if needed. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Eric Anholt <eric@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5107>
This commit is contained in:
parent
46d5b07c5c
commit
fcbc022787
1 changed files with 7 additions and 0 deletions
|
|
@ -99,6 +99,7 @@ tbool8 = "bool8"
|
|||
tbool16 = "bool16"
|
||||
tbool32 = "bool32"
|
||||
tuint = "uint"
|
||||
tuint8 = "uint8"
|
||||
tuint16 = "uint16"
|
||||
tfloat16 = "float16"
|
||||
tfloat32 = "float32"
|
||||
|
|
@ -357,6 +358,9 @@ dst.x = (src0.x << 0) |
|
|||
(src0.w << 24);
|
||||
""")
|
||||
|
||||
unop_horiz("pack_32_4x8", 1, tuint32, 4, tuint8,
|
||||
"dst.x = src0.x | ((uint32_t)src0.y << 8) | ((uint32_t)src0.z << 16) | ((uint32_t)src0.w << 24);")
|
||||
|
||||
unop_horiz("pack_32_2x16", 1, tuint32, 2, tuint16,
|
||||
"dst.x = src0.x | ((uint32_t)src0.y << 16);")
|
||||
|
||||
|
|
@ -375,6 +379,9 @@ unop_horiz("unpack_64_4x16", 4, tuint16, 1, tuint64,
|
|||
unop_horiz("unpack_32_2x16", 2, tuint16, 1, tuint32,
|
||||
"dst.x = src0.x; dst.y = src0.x >> 16;")
|
||||
|
||||
unop_horiz("unpack_32_4x8", 4, tuint8, 1, tuint32,
|
||||
"dst.x = src0.x; dst.y = src0.x >> 8; dst.z = src0.x >> 16; dst.w = src0.x >> 24;")
|
||||
|
||||
unop_horiz("unpack_half_2x16_flush_to_zero", 2, tfloat32, 1, tuint32, """
|
||||
dst.x = unpack_half_1x16_flush_to_zero((uint16_t)(src0.x & 0xffff));
|
||||
dst.y = unpack_half_1x16_flush_to_zero((uint16_t)(src0.x << 16));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue