aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/shader_ir.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2018-12-20 22:36:17 -0300
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-01-15 17:54:49 -0300
commit4aaa2192b993411f63d46a57b93e9e787b6a836d (patch)
tree879a467c5f3ba30d4417372dda2148011392adc9 /src/video_core/shader/shader_ir.cpp
parent15a0e1481d9a1efb3e3aa61cbaf2fa1ba0392d71 (diff)
shader_ir: Add immediate node constructors
Diffstat (limited to 'src/video_core/shader/shader_ir.cpp')
-rw-r--r--src/video_core/shader/shader_ir.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp
index db00c8902..c59ecf457 100644
--- a/src/video_core/shader/shader_ir.cpp
+++ b/src/video_core/shader/shader_ir.cpp
@@ -35,6 +35,18 @@ Node ShaderIR::Comment(const std::string& text) {
return StoreNode(CommentNode(text));
}
+Node ShaderIR::Immediate(u32 value) {
+ return StoreNode(ImmediateNode(value));
+}
+
+Node ShaderIR::GetImmediate19(Instruction instr) {
+ return Immediate(instr.alu.GetImm20_19());
+}
+
+Node ShaderIR::GetImmediate32(Instruction instr) {
+ return Immediate(instr.alu.GetImm20_32());
+}
+
Node ShaderIR::GetPredicate(u64 pred_, bool negated) {
const auto pred = static_cast<Pred>(pred_);
if (pred != Pred::UnusedIndex && pred != Pred::NeverExecute) {
@@ -44,6 +56,10 @@ Node ShaderIR::GetPredicate(u64 pred_, bool negated) {
return StoreNode(PredicateNode(pred, negated));
}
+Node ShaderIR::GetPredicate(bool immediate) {
+ return GetPredicate(static_cast<u64>(immediate ? Pred::UnusedIndex : Pred::NeverExecute));
+}
+
/*static*/ OperationCode ShaderIR::SignedToUnsignedCode(OperationCode operation_code,
bool is_signed) {
if (is_signed) {