diff options
| author | 2021-03-27 22:30:24 +0100 | |
|---|---|---|
| committer | 2021-07-22 21:51:25 -0400 | |
| commit | 34aba9627a8fad20b3b173180e2f3d679dd32293 (patch) | |
| tree | a4f2faec67a793e8b44493532a683908dcefb4d8 /src/shader_recompiler/frontend/ir/ir_emitter.cpp | |
| parent | shader: Fix alignment checks on RZ (diff) | |
| download | yuzu-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.cpp | 12 |
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 | ||
| 90 | void IREmitter::Unreachable() { | ||
| 91 | Inst(Opcode::Unreachable); | ||
| 92 | } | ||
| 93 | |||
| 90 | void IREmitter::DemoteToHelperInvocation(Block* continue_label) { | 94 | void 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 | ||
| 133 | U32 IREmitter::GetIndirectBranchVariable() { | ||
| 134 | return Inst<U32>(Opcode::GetIndirectBranchVariable); | ||
| 135 | } | ||
| 136 | |||
| 137 | void IREmitter::SetIndirectBranchVariable(const U32& value) { | ||
| 138 | Inst(Opcode::SetIndirectBranchVariable, value); | ||
| 139 | } | ||
| 140 | |||
| 129 | void IREmitter::SetPred(IR::Pred pred, const U1& value) { | 141 | void IREmitter::SetPred(IR::Pred pred, const U1& value) { |
| 130 | Inst(Opcode::SetPred, pred, value); | 142 | Inst(Opcode::SetPred, pred, value); |
| 131 | } | 143 | } |