shader_recompiler: added V_MAX VOP2 (431, 433)
This commit is contained in:
parent
be67fdc9c9
commit
d054c3e0ad
|
@ -424,6 +424,12 @@ void Translate(IR::Block* block, std::span<const GcnInst> inst_list, Info& info)
|
||||||
case Opcode::V_MAX_F32:
|
case Opcode::V_MAX_F32:
|
||||||
translator.V_MAX_F32(inst);
|
translator.V_MAX_F32(inst);
|
||||||
break;
|
break;
|
||||||
|
case Opcode::V_MAX_I32:
|
||||||
|
translator.V_MAX_U32(true, inst);
|
||||||
|
break;
|
||||||
|
case Opcode::V_MAX_U32:
|
||||||
|
translator.V_MAX_U32(false, inst);
|
||||||
|
break;
|
||||||
case Opcode::V_RSQ_F32:
|
case Opcode::V_RSQ_F32:
|
||||||
translator.V_RSQ_F32(inst);
|
translator.V_RSQ_F32(inst);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -80,6 +80,7 @@ public:
|
||||||
void V_FMA_F32(const GcnInst& inst);
|
void V_FMA_F32(const GcnInst& inst);
|
||||||
void V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst);
|
void V_CMP_F32(ConditionOp op, bool set_exec, const GcnInst& inst);
|
||||||
void V_MAX_F32(const GcnInst& inst);
|
void V_MAX_F32(const GcnInst& inst);
|
||||||
|
void V_MAX_U32(bool is_signed, const GcnInst& inst);
|
||||||
void V_RSQ_F32(const GcnInst& inst);
|
void V_RSQ_F32(const GcnInst& inst);
|
||||||
void V_SIN_F32(const GcnInst& inst);
|
void V_SIN_F32(const GcnInst& inst);
|
||||||
void V_LOG_F32(const GcnInst& inst);
|
void V_LOG_F32(const GcnInst& inst);
|
||||||
|
|
|
@ -197,6 +197,12 @@ void Translator::V_MAX_F32(const GcnInst& inst) {
|
||||||
SetDst(inst.dst[0], ir.FPMax(src0, src1));
|
SetDst(inst.dst[0], ir.FPMax(src0, src1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Translator::V_MAX_U32(bool is_signed, const GcnInst& inst) {
|
||||||
|
const IR::U32 src0{GetSrc(inst.src[0])};
|
||||||
|
const IR::U32 src1{GetSrc(inst.src[1])};
|
||||||
|
SetDst(inst.dst[0], ir.IMax(src0, src1, is_signed));
|
||||||
|
}
|
||||||
|
|
||||||
void Translator::V_RSQ_F32(const GcnInst& inst) {
|
void Translator::V_RSQ_F32(const GcnInst& inst) {
|
||||||
const IR::F32 src0{GetSrc(inst.src[0], true)};
|
const IR::F32 src0{GetSrc(inst.src[0], true)};
|
||||||
SetDst(inst.dst[0], ir.FPRecipSqrt(src0));
|
SetDst(inst.dst[0], ir.FPRecipSqrt(src0));
|
||||||
|
|
Loading…
Reference in New Issue