mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
agx: Add saturated integer add/subtract support
Just a flag on the regular iadd instruction. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Acked-by: Jason Ekstrand <jason@jlekstrand.net> Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10582>
This commit is contained in:
parent
86ae965ea4
commit
17bb5a067a
1 changed files with 28 additions and 0 deletions
|
|
@ -263,6 +263,34 @@ agx_emit_alu(agx_builder *b, nir_alu_instr *instr)
|
|||
case nir_op_ineg: return agx_iadd_to(b, dst, agx_zero(), agx_neg(s0), 0);
|
||||
case nir_op_imul: return agx_imad_to(b, dst, s0, s1, agx_zero(), 0);
|
||||
|
||||
case nir_op_iadd_sat:
|
||||
{
|
||||
agx_instr *I = agx_iadd_to(b, dst, s0, s1, 0);
|
||||
I->saturate = true;
|
||||
return I;
|
||||
}
|
||||
|
||||
case nir_op_isub_sat:
|
||||
{
|
||||
agx_instr *I = agx_iadd_to(b, dst, s0, agx_neg(s1), 0);
|
||||
I->saturate = true;
|
||||
return I;
|
||||
}
|
||||
|
||||
case nir_op_uadd_sat:
|
||||
{
|
||||
agx_instr *I = agx_iadd_to(b, dst, agx_abs(s0), agx_abs(s1), 0);
|
||||
I->saturate = true;
|
||||
return I;
|
||||
}
|
||||
|
||||
case nir_op_usub_sat:
|
||||
{
|
||||
agx_instr *I = agx_iadd_to(b, dst, agx_abs(s0), agx_neg(agx_abs(s1)), 0);
|
||||
I->saturate = true;
|
||||
return I;
|
||||
}
|
||||
|
||||
case nir_op_fsat:
|
||||
{
|
||||
agx_instr *I = agx_fadd_to(b, dst, s0, agx_negzero());
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue