summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2018-12-21 02:41:31 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-01-15 21:54:49 +0100
commit5e639bfcf6d764714cc9814fc47142ca85f889cf (patch)
tree29f4a84ea1beb8636352f10b0e6513977b3ed50d /src
parentshader_ir: Add immediate node constructors (diff)
downloadyuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar
yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.gz
yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.bz2
yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.lz
yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.xz
yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.tar.zst
yuzu-5e639bfcf6d764714cc9814fc47142ca85f889cf.zip
Diffstat (limited to '')
-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) {
return StoreNode(ImmediateNode(value));
}
+Node ShaderIR::GetRegister(Register reg) {
+ if (reg != Register::ZeroIndex) {
+ used_registers.insert(static_cast<u32>(reg));
+ }
+ return StoreNode(GprNode(reg));
+}
+
Node ShaderIR::GetImmediate19(Instruction instr) {
return Immediate(instr.alu.GetImm20_19());
}
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:
return Immediate(*reinterpret_cast<const u32*>(&value));
}
+ /// Generates a node for a passed register.
+ Node GetRegister(Tegra::Shader::Register reg);
/// Generates a node representing a 19-bit immediate value
Node GetImmediate19(Tegra::Shader::Instruction instr);
/// Generates a node representing a 32-bit immediate value