diff options
| author | 2021-04-21 02:42:36 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:28 -0400 | |
| commit | c84bbd9e44e34bba0e602c1a6736535aa531445c (patch) | |
| tree | 6e1a97dd556fe51d70c5acc18b7258655430e131 /src/shader_recompiler/frontend/ir/value.h | |
| parent | shader: Move microinstruction header to the value header (diff) | |
| download | yuzu-c84bbd9e44e34bba0e602c1a6736535aa531445c.tar.gz yuzu-c84bbd9e44e34bba0e602c1a6736535aa531445c.tar.xz yuzu-c84bbd9e44e34bba0e602c1a6736535aa531445c.zip | |
shader: Inline common Value functions into the header
Diffstat (limited to 'src/shader_recompiler/frontend/ir/value.h')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/value.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/value.h b/src/shader_recompiler/frontend/ir/value.h index d90a68b37..5425e42a1 100644 --- a/src/shader_recompiler/frontend/ir/value.h +++ b/src/shader_recompiler/frontend/ir/value.h | |||
| @@ -264,4 +264,27 @@ using U16U32U64 = TypedValue<Type::U16 | Type::U32 | Type::U64>; | |||
| 264 | using F16F32F64 = TypedValue<Type::F16 | Type::F32 | Type::F64>; | 264 | using F16F32F64 = TypedValue<Type::F16 | Type::F32 | Type::F64>; |
| 265 | using UAny = TypedValue<Type::U8 | Type::U16 | Type::U32 | Type::U64>; | 265 | using UAny = TypedValue<Type::U8 | Type::U16 | Type::U32 | Type::U64>; |
| 266 | 266 | ||
| 267 | inline bool Value::IsIdentity() const noexcept { | ||
| 268 | return type == Type::Opaque && inst->GetOpcode() == Opcode::Identity; | ||
| 269 | } | ||
| 270 | |||
| 271 | inline bool Value::IsPhi() const noexcept { | ||
| 272 | return type == Type::Opaque && inst->GetOpcode() == Opcode::Phi; | ||
| 273 | } | ||
| 274 | |||
| 275 | inline bool Value::IsEmpty() const noexcept { | ||
| 276 | return type == Type::Void; | ||
| 277 | } | ||
| 278 | |||
| 279 | inline bool Value::IsImmediate() const noexcept { | ||
| 280 | IR::Type current_type{type}; | ||
| 281 | const IR::Inst* current_inst{inst}; | ||
| 282 | while (current_type == Type::Opaque && current_inst->GetOpcode() == Opcode::Identity) { | ||
| 283 | const Value& arg{current_inst->Arg(0)}; | ||
| 284 | current_type = arg.type; | ||
| 285 | current_inst = arg.inst; | ||
| 286 | } | ||
| 287 | return current_type != Type::Opaque; | ||
| 288 | } | ||
| 289 | |||
| 267 | } // namespace Shader::IR | 290 | } // namespace Shader::IR |