zink: Avoid redundant cast to uint on PackHalf2x16 result
For example the previous code generates the following sequence of SPIR-V instructions ending with a redundant cast to uint: %2018 = OpExtInst %uint %1 PackHalf2x16 %2017 %2019 = OpBitcast %uint %2018 The new code generates: %2018 = OpExtInst %uint %1 PackHalf2x16 %2017 Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14568>
This commit is contained in:
@@ -1737,7 +1737,6 @@ emit_alu(struct ntv_context *ctx, nir_alu_instr *alu)
|
||||
case nir_op_pack_half_2x16:
|
||||
assert(nir_op_infos[alu->op].num_inputs == 1);
|
||||
result = emit_builtin_unop(ctx, GLSLstd450PackHalf2x16, get_dest_type(ctx, &alu->dest.dest, nir_type_uint), src[0]);
|
||||
force_float = true;
|
||||
break;
|
||||
|
||||
BUILTIN_UNOPF(nir_op_unpack_half_2x16, GLSLstd450UnpackHalf2x16)
|
||||
|
||||
Reference in New Issue
Block a user