diff options
| -rw-r--r-- | src/shader_recompiler/frontend/ir/value.h | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/src/shader_recompiler/frontend/ir/value.h b/src/shader_recompiler/frontend/ir/value.h index 0c6bf684d..dbea20115 100644 --- a/src/shader_recompiler/frontend/ir/value.h +++ b/src/shader_recompiler/frontend/ir/value.h @@ -57,6 +57,7 @@ public:      [[nodiscard]] IR::Inst* Inst() const;      [[nodiscard]] IR::Inst* InstRecursive() const; +    [[nodiscard]] IR::Inst* TryInstRecursive() const;      [[nodiscard]] IR::Value Resolve() const;      [[nodiscard]] IR::Reg Reg() const;      [[nodiscard]] IR::Pred Pred() const; @@ -308,6 +309,13 @@ inline IR::Inst* Value::InstRecursive() const {      return inst;  } +inline IR::Inst* Value::TryInstRecursive() const { +    if (IsIdentity()) { +        return inst->Arg(0).TryInstRecursive(); +    } +    return type == Type::Opaque ? inst : nullptr; +} +  inline IR::Value Value::Resolve() const {      if (IsIdentity()) {          return inst->Arg(0).Resolve(); | 
