vc4: Add support for the TGSI TRUNC opcode.

v2: Rebase on helpers.
This commit is contained in:
Eric Anholt 2014-08-05 13:33:50 -07:00
parent 399285403a
commit bf542cd372
4 changed files with 15 additions and 0 deletions

View File

@ -292,6 +292,16 @@ tgsi_to_qir_pow(struct tgsi_to_qir *trans,
qir_LOG2(c, src[0 * 4 + 0])));
}
static struct qreg
tgsi_to_qir_trunc(struct tgsi_to_qir *trans,
struct tgsi_full_instruction *tgsi_inst,
enum qop op, struct qreg *src, int i)
{
struct qcompile *c = trans->c;
return qir_ITOF(c, qir_FTOI(c, src[0 * 4 + i]));
}
static struct qreg
tgsi_to_qir_dp(struct tgsi_to_qir *trans,
struct tgsi_full_instruction *tgsi_inst,
@ -413,6 +423,7 @@ emit_tgsi_instruction(struct tgsi_to_qir *trans,
[TGSI_OPCODE_LIT] = { 0, tgsi_to_qir_lit },
[TGSI_OPCODE_LRP] = { 0, tgsi_to_qir_lrp },
[TGSI_OPCODE_POW] = { 0, tgsi_to_qir_pow },
[TGSI_OPCODE_TRUNC] = { 0, tgsi_to_qir_trunc },
};
static int asdf = 0;
uint32_t tgsi_op = tgsi_inst->Instruction.Opcode;

View File

@ -52,6 +52,7 @@ static const struct qir_op_info qir_op_info[] = {
[QOP_CMP] = { "cmp", 1, 3 },
[QOP_FTOI] = { "ftoi", 1, 1 },
[QOP_ITOF] = { "itof", 1, 1 },
[QOP_RCP] = { "rcp", 1, 1 },
[QOP_RSQ] = { "rsq", 1, 1 },
[QOP_EXP2] = { "exp2", 1, 2 },

View File

@ -59,6 +59,7 @@ enum qop {
QOP_CMP,
QOP_FTOI,
QOP_ITOF,
QOP_RCP,
QOP_RSQ,
QOP_EXP2,
@ -186,6 +187,7 @@ QIR_ALU2(FMAX)
QIR_ALU2(FMINABS)
QIR_ALU2(FMAXABS)
QIR_ALU1(FTOI)
QIR_ALU1(ITOF)
QIR_ALU1(RCP)
QIR_ALU1(RSQ)
QIR_ALU1(EXP2)

View File

@ -249,6 +249,7 @@ vc4_generate_code(struct qcompile *c)
A(FMINABS),
A(FMAXABS),
A(FTOI),
A(ITOF),
M(FMUL),
};