panfrost/midgard: Add fcsel_i opcode

Whereas a normal fcsel acts on a boolean input in r31.w, the fcsel_i
variant acts on an integer input in r31.w, which can be preloaded with
an instruction like imov (with the appropriate negate flag on the
source).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig 2019-03-24 22:27:06 +00:00
parent 121417ef1d
commit 89fdbb6707
2 changed files with 3 additions and 0 deletions

View File

@ -223,6 +223,7 @@ static unsigned alu_opcode_props[256] = {
[midgard_alu_op_ile] = UNITS_MOST,
[midgard_alu_op_icsel] = UNITS_ADD,
[midgard_alu_op_fcsel_i] = UNITS_ADD,
[midgard_alu_op_fcsel] = UNITS_ADD | UNIT_SMUL,
[midgard_alu_op_frcp] = UNIT_VLUT,

View File

@ -105,6 +105,7 @@ typedef enum {
midgard_alu_op_i2f = 0xB8,
midgard_alu_op_u2f = 0xBC,
midgard_alu_op_icsel = 0xC1,
midgard_alu_op_fcsel_i = 0xC4,
midgard_alu_op_fcsel = 0xC5,
midgard_alu_op_fround = 0xC6,
midgard_alu_op_fatan_pt2 = 0xE8,
@ -457,6 +458,7 @@ static char *alu_opcode_names[256] = {
[midgard_alu_op_i2f] = "i2f",
[midgard_alu_op_u2f] = "u2f",
[midgard_alu_op_icsel] = "icsel",
[midgard_alu_op_fcsel_i] = "fcsel_i",
[midgard_alu_op_fcsel] = "fcsel",
[midgard_alu_op_fround] = "fround",
[midgard_alu_op_fatan_pt2] = "fatan_pt2",