pco: add support for more pack/unpack ops
Signed-off-by: Simon Perretta <simon.perretta@imgtec.com> Acked-by: Frank Binns <frank.binns@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33998>
This commit is contained in:
committed by
Marge Bot
parent
2983d23e63
commit
043e05768a
@@ -895,6 +895,40 @@ static pco_instr *trans_alu(trans_ctx *tctx, nir_alu_instr *alu)
|
||||
instr = pco_fmax(&tctx->b, dest, src[0], src[1]);
|
||||
break;
|
||||
|
||||
case nir_op_pack_half_2x16:
|
||||
instr = pco_pck(&tctx->b,
|
||||
dest,
|
||||
src[0],
|
||||
.rpt = 2,
|
||||
.pck_fmt = PCO_PCK_FMT_F16F16);
|
||||
break;
|
||||
|
||||
case nir_op_unpack_half_2x16:
|
||||
instr = pco_unpck(&tctx->b,
|
||||
dest,
|
||||
pco_ref_elem(src[0], 0),
|
||||
.rpt = 2,
|
||||
.pck_fmt = PCO_PCK_FMT_F16F16);
|
||||
break;
|
||||
|
||||
case nir_op_pack_snorm_4x8:
|
||||
instr = pco_pck(&tctx->b,
|
||||
dest,
|
||||
src[0],
|
||||
.rpt = 4,
|
||||
.pck_fmt = PCO_PCK_FMT_S8888,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_unpack_snorm_4x8:
|
||||
instr = pco_unpck(&tctx->b,
|
||||
dest,
|
||||
pco_ref_elem(src[0], 0),
|
||||
.rpt = 4,
|
||||
.pck_fmt = PCO_PCK_FMT_S8888,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_pack_unorm_4x8:
|
||||
instr = pco_pck(&tctx->b,
|
||||
dest,
|
||||
@@ -904,6 +938,51 @@ static pco_instr *trans_alu(trans_ctx *tctx, nir_alu_instr *alu)
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_unpack_unorm_4x8:
|
||||
instr = pco_unpck(&tctx->b,
|
||||
dest,
|
||||
pco_ref_elem(src[0], 0),
|
||||
.rpt = 4,
|
||||
.pck_fmt = PCO_PCK_FMT_U8888,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_pack_snorm_2x16:
|
||||
instr = pco_pck(&tctx->b,
|
||||
dest,
|
||||
src[0],
|
||||
.rpt = 2,
|
||||
.pck_fmt = PCO_PCK_FMT_S1616,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_unpack_snorm_2x16:
|
||||
instr = pco_unpck(&tctx->b,
|
||||
dest,
|
||||
pco_ref_elem(src[0], 0),
|
||||
.rpt = 2,
|
||||
.pck_fmt = PCO_PCK_FMT_S1616,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_pack_unorm_2x16:
|
||||
instr = pco_pck(&tctx->b,
|
||||
dest,
|
||||
src[0],
|
||||
.rpt = 2,
|
||||
.pck_fmt = PCO_PCK_FMT_U1616,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_unpack_unorm_2x16:
|
||||
instr = pco_unpck(&tctx->b,
|
||||
dest,
|
||||
pco_ref_elem(src[0], 0),
|
||||
.rpt = 2,
|
||||
.pck_fmt = PCO_PCK_FMT_U1616,
|
||||
.scale = true);
|
||||
break;
|
||||
|
||||
case nir_op_vec2:
|
||||
case nir_op_vec3:
|
||||
case nir_op_vec4:
|
||||
|
||||
Reference in New Issue
Block a user