diff options
| author | 2018-12-20 22:41:31 -0300 | |
|---|---|---|
| committer | 2019-01-15 17:54:49 -0300 | |
| commit | 5e639bfcf6d764714cc9814fc47142ca85f889cf (patch) | |
| tree | 29f4a84ea1beb8636352f10b0e6513977b3ed50d /src | |
| parent | shader_ir: Add immediate node constructors (diff) | |
| download | yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.gz yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.xz yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.zip | |
shader_ir: Add register getter
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/shader/shader_ir.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/shader/shader_ir.h | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp index c59ecf457..ff4e462f2 100644 --- a/src/video_core/shader/shader_ir.cpp +++ b/src/video_core/shader/shader_ir.cpp | |||
| @@ -39,6 +39,13 @@ Node ShaderIR::Immediate(u32 value) { | |||
| 39 | return StoreNode(ImmediateNode(value)); | 39 | return StoreNode(ImmediateNode(value)); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | Node ShaderIR::GetRegister(Register reg) { | ||
| 43 | if (reg != Register::ZeroIndex) { | ||
| 44 | used_registers.insert(static_cast<u32>(reg)); | ||
| 45 | } | ||
| 46 | return StoreNode(GprNode(reg)); | ||
| 47 | } | ||
| 48 | |||
| 42 | Node ShaderIR::GetImmediate19(Instruction instr) { | 49 | Node ShaderIR::GetImmediate19(Instruction instr) { |
| 43 | return Immediate(instr.alu.GetImm20_19()); | 50 | return Immediate(instr.alu.GetImm20_19()); |
| 44 | } | 51 | } |
diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h index db06d51ca..30b75c3ed 100644 --- a/src/video_core/shader/shader_ir.h +++ b/src/video_core/shader/shader_ir.h | |||
| @@ -610,6 +610,8 @@ private: | |||
| 610 | return Immediate(*reinterpret_cast<const u32*>(&value)); | 610 | return Immediate(*reinterpret_cast<const u32*>(&value)); |
| 611 | } | 611 | } |
| 612 | 612 | ||
| 613 | /// Generates a node for a passed register. | ||
| 614 | Node GetRegister(Tegra::Shader::Register reg); | ||
| 613 | /// Generates a node representing a 19-bit immediate value | 615 | /// Generates a node representing a 19-bit immediate value |
| 614 | Node GetImmediate19(Tegra::Shader::Instruction instr); | 616 | Node GetImmediate19(Tegra::Shader::Instruction instr); |
| 615 | /// Generates a node representing a 32-bit immediate value | 617 | /// Generates a node representing a 32-bit immediate value |