summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/ir_emitter.cpp
diff options
context:
space:
mode:
authorGravatar FernandoS272021-03-27 22:30:24 +0100
committerGravatar ameerj2021-07-22 21:51:25 -0400
commit34aba9627a8fad20b3b173180e2f3d679dd32293 (patch)
treea4f2faec67a793e8b44493532a683908dcefb4d8 /src/shader_recompiler/frontend/ir/ir_emitter.cpp
parentshader: Fix alignment checks on RZ (diff)
downloadyuzu-34aba9627a8fad20b3b173180e2f3d679dd32293.tar.gz
yuzu-34aba9627a8fad20b3b173180e2f3d679dd32293.tar.xz
yuzu-34aba9627a8fad20b3b173180e2f3d679dd32293.zip
shader: Implement BRX
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index 9b898e4e1..552472487 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -87,6 +87,10 @@ void IREmitter::Return() {
87 Inst(Opcode::Return); 87 Inst(Opcode::Return);
88} 88}
89 89
90void IREmitter::Unreachable() {
91 Inst(Opcode::Unreachable);
92}
93
90void IREmitter::DemoteToHelperInvocation(Block* continue_label) { 94void IREmitter::DemoteToHelperInvocation(Block* continue_label) {
91 block->SetBranch(continue_label); 95 block->SetBranch(continue_label);
92 continue_label->AddImmediatePredecessor(block); 96 continue_label->AddImmediatePredecessor(block);
@@ -126,6 +130,14 @@ void IREmitter::SetGotoVariable(u32 id, const U1& value) {
126 Inst(Opcode::SetGotoVariable, id, value); 130 Inst(Opcode::SetGotoVariable, id, value);
127} 131}
128 132
133U32 IREmitter::GetIndirectBranchVariable() {
134 return Inst<U32>(Opcode::GetIndirectBranchVariable);
135}
136
137void IREmitter::SetIndirectBranchVariable(const U32& value) {
138 Inst(Opcode::SetIndirectBranchVariable, value);
139}
140
129void IREmitter::SetPred(IR::Pred pred, const U1& value) { 141void IREmitter::SetPred(IR::Pred pred, const U1& value) {
130 Inst(Opcode::SetPred, pred, value); 142 Inst(Opcode::SetPred, pred, value);
131} 143}