mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 22:18:13 +02:00
nv50/ir: Add support for MAD 4-byte opcode
Add emission rules for negative and saturate flags for MAD 4-byte opcodes, and get rid of some of the constraints. Obviously tested with a wide variety of shaders. V2: Document MAD as supported short form V3: Split up IMM from short-form modifiers Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
354206f407
commit
fb63df2215
2 changed files with 6 additions and 8 deletions
|
|
@ -941,7 +941,10 @@ CodeEmitterNV50::emitFMAD(const Instruction *i)
|
||||||
|
|
||||||
if (i->encSize == 4) {
|
if (i->encSize == 4) {
|
||||||
emitForm_MUL(i);
|
emitForm_MUL(i);
|
||||||
assert(!neg_mul && !neg_add);
|
code[0] |= neg_mul << 15;
|
||||||
|
code[0] |= neg_add << 22;
|
||||||
|
if (i->saturate)
|
||||||
|
code[0] |= 1 << 8;
|
||||||
} else {
|
} else {
|
||||||
code[1] = neg_mul << 26;
|
code[1] = neg_mul << 26;
|
||||||
code[1] |= neg_add << 27;
|
code[1] |= neg_add << 27;
|
||||||
|
|
@ -1931,11 +1934,6 @@ CodeEmitterNV50::getMinEncodingSize(const Instruction *i) const
|
||||||
|
|
||||||
// check constraints on short MAD
|
// check constraints on short MAD
|
||||||
if (info.srcNr >= 2 && i->srcExists(2)) {
|
if (info.srcNr >= 2 && i->srcExists(2)) {
|
||||||
if (i->saturate || i->src(2).mod)
|
|
||||||
return 8;
|
|
||||||
if ((i->src(0).mod ^ i->src(1).mod) ||
|
|
||||||
(i->src(0).mod | i->src(1).mod).abs())
|
|
||||||
return 8;
|
|
||||||
if (!i->defExists(0) ||
|
if (!i->defExists(0) ||
|
||||||
i->def(0).rep()->reg.data.id != i->src(2).rep()->reg.data.id)
|
i->def(0).rep()->reg.data.id != i->src(2).rep()->reg.data.id)
|
||||||
return 8;
|
return 8;
|
||||||
|
|
|
||||||
|
|
@ -117,8 +117,8 @@ void TargetNV50::initOpInfo()
|
||||||
};
|
};
|
||||||
static const uint32_t shortForm[(OP_LAST + 31) / 32] =
|
static const uint32_t shortForm[(OP_LAST + 31) / 32] =
|
||||||
{
|
{
|
||||||
// MOV,ADD,SUB,MUL,SAD,L/PINTERP,RCP,TEX,TXF
|
// MOV,ADD,SUB,MUL,MAD,SAD,L/PINTERP,RCP,TEX,TXF
|
||||||
0x00010e40, 0x00000040, 0x00000498, 0x00000000
|
0x00014e40, 0x00000040, 0x00000498, 0x00000000
|
||||||
};
|
};
|
||||||
static const operation noDestList[] =
|
static const operation noDestList[] =
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue