summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2018-12-20 22:41:31 -0300
committerGravatar ReinUsesLisp2019-01-15 17:54:49 -0300
commit5e639bfcf6d764714cc9814fc47142ca85f889cf (patch)
tree29f4a84ea1beb8636352f10b0e6513977b3ed50d /src
parentshader_ir: Add immediate node constructors (diff)
downloadyuzu-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.cpp7
-rw-r--r--src/video_core/shader/shader_ir.h2
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
42Node 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
42Node ShaderIR::GetImmediate19(Instruction instr) { 49Node 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