diff options
| author | 2021-07-26 01:31:05 -0300 | |
|---|---|---|
| committer | 2021-07-26 01:31:05 -0300 | |
| commit | f6f0383b49e70eb9cc534fc5b283371f29189108 (patch) | |
| tree | 4a0f19e08e0c19f6ed6ef48430c6949ebd9f06ce /src/shader_recompiler/frontend/ir/value.h | |
| parent | Merge pull request #6697 from ameerj/fps-cap (diff) | |
| download | yuzu-f6f0383b49e70eb9cc534fc5b283371f29189108.tar.gz yuzu-f6f0383b49e70eb9cc534fc5b283371f29189108.tar.xz yuzu-f6f0383b49e70eb9cc534fc5b283371f29189108.zip | |
shader: Add TryInstRecursive utility to values
Diffstat (limited to '')
| -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: | |||
| 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 | ||
| 312 | inline IR::Inst* Value::TryInstRecursive() const { | ||
| 313 | if (IsIdentity()) { | ||
| 314 | return inst->Arg(0).TryInstRecursive(); | ||
| 315 | } | ||
| 316 | return type == Type::Opaque ? inst : nullptr; | ||
| 317 | } | ||
| 318 | |||
| 311 | inline IR::Value Value::Resolve() const { | 319 | inline IR::Value Value::Resolve() const { |
| 312 | if (IsIdentity()) { | 320 | if (IsIdentity()) { |
| 313 | return inst->Arg(0).Resolve(); | 321 | return inst->Arg(0).Resolve(); |