summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/value.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/shader_recompiler/frontend/ir/value.h8
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:
57 57
58 [[nodiscard]] IR::Inst* Inst() const; 58 [[nodiscard]] IR::Inst* Inst() const;
59 [[nodiscard]] IR::Inst* InstRecursive() const; 59 [[nodiscard]] IR::Inst* InstRecursive() const;
60 [[nodiscard]] IR::Inst* TryInstRecursive() const;
60 [[nodiscard]] IR::Value Resolve() const; 61 [[nodiscard]] IR::Value Resolve() const;
61 [[nodiscard]] IR::Reg Reg() const; 62 [[nodiscard]] IR::Reg Reg() const;
62 [[nodiscard]] IR::Pred Pred() const; 63 [[nodiscard]] IR::Pred Pred() const;
@@ -308,6 +309,13 @@ inline IR::Inst* Value::InstRecursive() const {
308 return inst; 309 return inst;
309} 310}
310 311
312inline IR::Inst* Value::TryInstRecursive() const {
313 if (IsIdentity()) {
314 return inst->Arg(0).TryInstRecursive();
315 }
316 return type == Type::Opaque ? inst : nullptr;
317}
318
311inline IR::Value Value::Resolve() const { 319inline IR::Value Value::Resolve() const {
312 if (IsIdentity()) { 320 if (IsIdentity()) {
313 return inst->Arg(0).Resolve(); 321 return inst->Arg(0).Resolve();