lima/ppir: Add fsat op
Signed-off-by: Andreas Baierl <ichgeh@imkreisrum.de> Reviewed-by: Qiang Yu <yuq825@gmail.com>
This commit is contained in:
@@ -427,6 +427,20 @@ static bool ppir_lower_neg(ppir_block *block, ppir_node *node)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ppir_lower_sat(ppir_block *block, ppir_node *node)
|
||||
{
|
||||
/* Turn it into a mov with the saturate output modifier */
|
||||
ppir_alu_node *alu = ppir_node_to_alu(node);
|
||||
|
||||
assert(alu->num_src == 1);
|
||||
|
||||
ppir_dest *move_dest = &alu->dest;
|
||||
move_dest->modifier = ppir_outmod_clamp_fraction;
|
||||
node->op = ppir_op_mov;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ppir_lower_branch(ppir_block *block, ppir_node *node)
|
||||
{
|
||||
ppir_branch_node *branch = ppir_node_to_branch(node);
|
||||
@@ -480,6 +494,7 @@ static bool (*ppir_lower_funcs[ppir_op_num])(ppir_block *, ppir_node *) = {
|
||||
[ppir_op_load_texture] = ppir_lower_texture,
|
||||
[ppir_op_select] = ppir_lower_select,
|
||||
[ppir_op_trunc] = ppir_lower_trunc,
|
||||
[ppir_op_sat] = ppir_lower_sat,
|
||||
[ppir_op_branch] = ppir_lower_branch,
|
||||
};
|
||||
|
||||
|
@@ -152,6 +152,7 @@ static int nir_to_ppir_opcodes[nir_num_opcodes] = {
|
||||
[nir_op_fcsel] = ppir_op_select,
|
||||
[nir_op_inot] = ppir_op_not,
|
||||
[nir_op_ftrunc] = ppir_op_trunc,
|
||||
[nir_op_fsat] = ppir_op_sat,
|
||||
};
|
||||
|
||||
static ppir_node *ppir_emit_alu(ppir_block *block, nir_instr *ni)
|
||||
|
@@ -43,6 +43,9 @@ const ppir_op_info ppir_op_infos[] = {
|
||||
[ppir_op_neg] = {
|
||||
.name = "neg",
|
||||
},
|
||||
[ppir_op_sat] = {
|
||||
.name = "sat",
|
||||
},
|
||||
[ppir_op_mul] = {
|
||||
.name = "mul",
|
||||
.slots = (int []) {
|
||||
|
@@ -34,6 +34,7 @@ typedef enum {
|
||||
ppir_op_mov,
|
||||
ppir_op_abs,
|
||||
ppir_op_neg,
|
||||
ppir_op_sat,
|
||||
ppir_op_add,
|
||||
|
||||
ppir_op_ddx,
|
||||
|
Reference in New Issue
Block a user