From baec84247fe815199595d9e8077b71f3b5c8317e Mon Sep 17 00:00:00 2001
From: FernandoS27 <fsahmkow27@gmail.com>
Date: Sat, 3 Apr 2021 01:48:39 +0200
Subject: shader: Address Feedback

---
 src/shader_recompiler/frontend/ir/ir_emitter.cpp | 49 +++++++-----------------
 1 file changed, 13 insertions(+), 36 deletions(-)

(limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')

diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index b5f61956a5..5e94edd747 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -82,8 +82,17 @@ void IREmitter::SelectionMerge(Block* merge_block) {
     Inst(Opcode::SelectionMerge, merge_block);
 }
 
-void IREmitter::MemoryBarrier(BarrierInstInfo info) {
-    Inst(Opcode::MemoryBarrier, Flags{info});
+void IREmitter::MemoryBarrier(MemoryScope scope) {
+    switch (scope) {
+    case MemoryScope::Workgroup:
+        Inst(Opcode::MemoryBarrierWorkgroupLevel);
+    case MemoryScope::Device:
+        Inst(Opcode::MemoryBarrierDeviceLevel);
+    case MemoryScope::System:
+        Inst(Opcode::MemoryBarrierSystemLevel);
+    default:
+        throw InvalidArgument("Invalid memory scope {}", scope);
+    }
 }
 
 void IREmitter::Return() {
@@ -202,38 +211,6 @@ void IREmitter::SetOFlag(const U1& value) {
     Inst(Opcode::SetOFlag, value);
 }
 
-U1 IREmitter::GetFCSMFlag() {
-    return Inst<U1>(Opcode::GetFCSMFlag);
-}
-
-U1 IREmitter::GetTAFlag() {
-    return Inst<U1>(Opcode::GetTAFlag);
-}
-
-U1 IREmitter::GetTRFlag() {
-    return Inst<U1>(Opcode::GetTRFlag);
-}
-
-U1 IREmitter::GetMXFlag() {
-    return Inst<U1>(Opcode::GetMXFlag);
-}
-
-void IREmitter::SetFCSMFlag(const U1& value) {
-    Inst(Opcode::SetFCSMFlag, value);
-}
-
-void IREmitter::SetTAFlag(const U1& value) {
-    Inst(Opcode::SetTAFlag, value);
-}
-
-void IREmitter::SetTRFlag(const U1& value) {
-    Inst(Opcode::SetTRFlag, value);
-}
-
-void IREmitter::SetMXFlag(const U1& value) {
-    Inst(Opcode::SetMXFlag, value);
-}
-
 static U1 GetFlowTest(IREmitter& ir, FlowTest flow_test) {
     switch (flow_test) {
     case FlowTest::F:
@@ -292,9 +269,9 @@ static U1 GetFlowTest(IREmitter& ir, FlowTest flow_test) {
         return ir.LogicalOr(ir.GetSFlag(), ir.GetZFlag());
     case FlowTest::RGT:
         return ir.LogicalAnd(ir.LogicalNot(ir.GetSFlag()), ir.LogicalNot(ir.GetZFlag()));
-
     case FlowTest::FCSM_TR:
-        return ir.LogicalAnd(ir.GetFCSMFlag(), ir.GetTRFlag());
+        // LOG_WARNING(ShaderDecompiler, "FCSM_TR CC State (Stubbed)");
+        return ir.Imm1(false);
     case FlowTest::CSM_TA:
     case FlowTest::CSM_TR:
     case FlowTest::CSM_MX:
-- 
cgit v1.2.3-70-g09d2