From: Jason Ekstrand Date: Wed, 15 Aug 2018 16:58:50 +0000 (-0500) Subject: nir/opcodes: Make unpack_half_2x16_split_* variable-width X-Git-Tag: android-x86-8.1-r1~1204 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=80c424148b47b6615f8e8c4886257a5c7323ef25;p=android-x86%2Fexternal-mesa.git nir/opcodes: Make unpack_half_2x16_split_* variable-width There is nothing inherent about these opcodes that requires them to only take scalars. It's very convenient if we let them take vectors as well. Reviewed-by: Kenneth Graunke --- diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py index ed8e0ae9f39..4ef4ecc6f22 100644 --- a/src/compiler/nir/nir_opcodes.py +++ b/src/compiler/nir/nir_opcodes.py @@ -304,10 +304,10 @@ unop_horiz("unpack_32_2x16", 2, tuint16, 1, tuint32, # Lowered floating point unpacking operations. -unop_horiz("unpack_half_2x16_split_x", 1, tfloat32, 1, tuint32, - "unpack_half_1x16((uint16_t)(src0.x & 0xffff))") -unop_horiz("unpack_half_2x16_split_y", 1, tfloat32, 1, tuint32, - "unpack_half_1x16((uint16_t)(src0.x >> 16))") +unop_convert("unpack_half_2x16_split_x", tfloat32, tuint32, + "unpack_half_1x16((uint16_t)(src0 & 0xffff))") +unop_convert("unpack_half_2x16_split_y", tfloat32, tuint32, + "unpack_half_1x16((uint16_t)(src0 >> 16))") unop_convert("unpack_32_2x16_split_x", tuint16, tuint32, "src0") unop_convert("unpack_32_2x16_split_y", tuint16, tuint32, "src0 >> 16")