summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-05-10 02:22:55 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-23 03:51:31 +0200
commit7703d65f234a3032adef795037320cd30ef28a3a (patch)
tree7e3af9a0fe177f22b39ddf3b30158d68b24633b3
parentglasm: Add logical instructions on GLASM (diff)
downloadyuzu-7703d65f234a3032adef795037320cd30ef28a3a.tar
yuzu-7703d65f234a3032adef795037320cd30ef28a3a.tar.gz
yuzu-7703d65f234a3032adef795037320cd30ef28a3a.tar.bz2
yuzu-7703d65f234a3032adef795037320cd30ef28a3a.tar.lz
yuzu-7703d65f234a3032adef795037320cd30ef28a3a.tar.xz
yuzu-7703d65f234a3032adef795037320cd30ef28a3a.tar.zst
yuzu-7703d65f234a3032adef795037320cd30ef28a3a.zip
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp14
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_instructions.h4
2 files changed, 8 insertions, 10 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp
index 1139a22bd..aab506109 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp
@@ -75,22 +75,20 @@ void EmitFPFma64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b, Sca
ctx.LongAdd("MAD.F64 {}.x,{},{},{};", inst, a, b, c);
}
-void EmitFPMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] ScalarF32 a,
- [[maybe_unused]] ScalarF32 b) {
- throw NotImplementedException("GLASM instruction");
+void EmitFPMax32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b) {
+ ctx.Add("MAX.F {}.x,{},{};", inst, a, b);
}
void EmitFPMax64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b) {
- ctx.LongAdd("MAX.F64 {},{},{};", inst, a, b);
+ ctx.LongAdd("MAX.F64 {}.x,{},{};", inst, a, b);
}
-void EmitFPMin32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] ScalarF32 a,
- [[maybe_unused]] ScalarF32 b) {
- throw NotImplementedException("GLASM instruction");
+void EmitFPMin32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b) {
+ ctx.Add("MIN.F {}.x,{},{};", inst, a, b);
}
void EmitFPMin64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b) {
- ctx.LongAdd("MIN.F64 {},{},{};", inst, a, b);
+ ctx.LongAdd("MIN.F64 {}.x,{},{};", inst, a, b);
}
void EmitFPMul16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
index 174eaaafa..5d94f21a6 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
@@ -221,9 +221,9 @@ void EmitFPAdd64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b);
void EmitFPFma16(EmitContext& ctx, IR::Inst& inst, Register a, Register b, Register c);
void EmitFPFma32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b, ScalarF32 c);
void EmitFPFma64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b, ScalarF64 c);
-void EmitFPMax32(EmitContext& ctx, ScalarF32 a, ScalarF32 b);
+void EmitFPMax32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b);
void EmitFPMax64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b);
-void EmitFPMin32(EmitContext& ctx, ScalarF32 a, ScalarF32 b);
+void EmitFPMin32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b);
void EmitFPMin64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b);
void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, Register a, Register b);
void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b);