shader_recompiler: Even more instructions

This commit is contained in:
IndecisiveTurtle 2024-06-22 01:23:56 +03:00 committed by georgemoralis
parent 30199fe701
commit 741427040f
7 changed files with 25 additions and 3 deletions

View file

@ -321,4 +321,8 @@ void Translator::S_NOT_B64(const GcnInst& inst) {
}
}
void Translator::S_BREV_B32(const GcnInst& inst) {
SetDst(inst.dst[0], ir.BitReverse(GetSrc(inst.src[0])));
}
} // namespace Shader::Gcn

View file

@ -684,6 +684,12 @@ void Translate(IR::Block* block, std::span<const GcnInst> inst_list, Info& info)
case Opcode::V_CEIL_F32:
translator.V_CEIL_F32(inst);
break;
case Opcode::V_BFI_B32:
translator.V_BFI_B32(inst);
break;
case Opcode::S_BREV_B32:
translator.S_BREV_B32(inst);
break;
case Opcode::S_TTRACEDATA:
LOG_WARNING(Render_Vulkan, "S_TTRACEDATA instruction!");
break;

View file

@ -53,6 +53,7 @@ public:
void S_LSHL_B32(const GcnInst& inst);
void S_BFM_B32(const GcnInst& inst);
void S_NOT_B64(const GcnInst& inst);
void S_BREV_B32(const GcnInst& inst);
// Scalar Memory
void S_LOAD_DWORD(int num_dwords, const GcnInst& inst);
@ -120,6 +121,7 @@ public:
void V_CEIL_F32(const GcnInst& inst);
void V_MIN_U32(const GcnInst& inst);
void V_CMP_NE_U64(const GcnInst& inst);
void V_BFI_B32(const GcnInst& inst);
// Vector Memory
void BUFFER_LOAD_FORMAT(u32 num_dwords, bool is_typed, const GcnInst& inst);

View file

@ -470,4 +470,12 @@ void Translator::V_CMP_NE_U64(const GcnInst& inst) {
}
}
void Translator::V_BFI_B32(const GcnInst& inst) {
const IR::U32 src0{GetSrc(inst.src[0])};
const IR::U32 src1{GetSrc(inst.src[1])};
const IR::U32 src2{GetSrc(inst.src[2])};
SetDst(inst.dst[0], ir.BitwiseOr(ir.BitwiseAnd(src0, src1),
ir.BitwiseAnd(ir.BitwiseNot(src0), src2)));
}
} // namespace Shader::Gcn