shader_recompiler: renamed SrcValue to SrcValue & added simple docs

This commit is contained in:
Vinicius Rangel 2024-08-03 22:29:44 -03:00
parent 523fc24fb1
commit 813e1ef1a3
No known key found for this signature in database
GPG Key ID: A5B154D904B761D9
2 changed files with 24 additions and 23 deletions

View File

@ -309,11 +309,8 @@ IR::U64F64 Translator::GetSrcRaw64(const InstOperand& operand, bool integer) {
}
template <>
Translator::SrcAuto Translator::GetSrc<Translator::SrcAuto>(const InstOperand& operand) {
return SrcAuto{
*this,
operand,
};
Translator::SrcValue Translator::GetSrc<Translator::SrcValue>(const InstOperand& operand) {
return SrcValue{*this, operand};
}
template <>
@ -346,31 +343,31 @@ IR::F64 Translator::GetSrc(const InstOperand& operand) {
return GetSrcRaw64(operand, false);
}
Translator::SrcAuto::operator IR::U32F32() const {
Translator::SrcValue::operator IR::U32F32() const {
return translator.GetSrc<IR::U32F32>(operand);
}
Translator::SrcAuto::operator IR::Value() const {
Translator::SrcValue::operator IR::Value() const {
return IR::Value{translator.GetSrc<IR::U32F32>(operand)};
}
Translator::SrcAuto::operator IR::U32() const {
Translator::SrcValue::operator IR::U32() const {
return translator.GetSrc<IR::U32>(operand);
}
Translator::SrcAuto::operator IR::F32() const {
Translator::SrcValue::operator IR::F32() const {
return translator.GetSrc<IR::F32>(operand);
}
Translator::SrcAuto::operator IR::U64F64() const {
Translator::SrcValue::operator IR::U64F64() const {
return translator.GetSrc<IR::U64F64>(operand);
}
Translator::SrcAuto::operator IR::U64() const {
Translator::SrcValue::operator IR::U64() const {
return translator.GetSrc<IR::U64>(operand);
}
Translator::SrcAuto::operator IR::F64() const {
Translator::SrcValue::operator IR::F64() const {
return translator.GetSrc<IR::F64>(operand);
}

View File

@ -209,11 +209,11 @@ public:
void IMAGE_ATOMIC(AtomicOp op, const GcnInst& inst);
private:
struct SrcAuto;
struct SrcValue;
[[nodiscard]] IR::U32F32 GetSrcRaw(const InstOperand& operand, bool integer);
[[nodiscard]] IR::U64F64 GetSrcRaw64(const InstOperand& operand, bool integer);
template <typename T = SrcAuto>
template <typename T = SrcValue>
[[nodiscard]] T GetSrc(const InstOperand& operand);
void SetDst(const InstOperand& operand, const IR::U32F32& value);
@ -228,23 +228,27 @@ private:
IR::U32 m0_value;
bool opcode_missing = false;
class SrcAuto {
/**
* This is a wrapper for IR::Value returned by GetSrc to lazy
* evaluate the correct type and auto-cast to integer if needed.
*/
class SrcValue {
Translator& translator;
const InstOperand& operand;
public:
SrcAuto(Translator& translator, const InstOperand& operand)
SrcValue(Translator& translator, const InstOperand& operand)
: translator(translator), operand(operand) {}
operator IR::Value() const;
explicit(false) operator IR::Value() const;
operator IR::U32F32() const;
operator IR::U32() const;
operator IR::F32() const;
explicit(false) operator IR::U32F32() const;
explicit(false) operator IR::U32() const;
explicit(false) operator IR::F32() const;
operator IR::U64F64() const;
operator IR::U64() const;
operator IR::F64() const;
explicit(false) operator IR::U64F64() const;
explicit(false) operator IR::U64() const;
explicit(false) operator IR::F64() const;
};
};