From 98ed8ff103a975be93dbbb89d554fbea355aacde Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Tue, 18 May 2021 21:30:24 -0300
Subject: glasm: Implement BFE.CC

---
 src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp')

diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
index 1befeca91a..ba69c7a1be 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
@@ -122,6 +122,14 @@ void EmitBitFieldUExtract(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, Scal
                 "BFE.U {},RC,{};",
                 count, offset, ret, base);
     }
+    if (const auto zero = inst.GetAssociatedPseudoOperation(IR::Opcode::GetZeroFromOp)) {
+        ctx.Add("SEQ.S {},{},0;", *zero, ret);
+        zero->Invalidate();
+    }
+    if (const auto sign = inst.GetAssociatedPseudoOperation(IR::Opcode::GetSignFromOp)) {
+        ctx.Add("SLT.S {},{},0;", *sign, ret);
+        sign->Invalidate();
+    }
 }
 
 void EmitBitReverse32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
-- 
cgit v1.2.3-70-g09d2