summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-05-10 03:55:33 -0300
committerGravatar ameerj2021-07-22 21:51:31 -0400
commit5b18a12df2116fcbb4bf10a2becd6cb404af0968 (patch)
tree1568ddb378759cbf0b0176aa3ecedac1c0b15436
parentshader: Add floating-point rounding to I2F (diff)
downloadyuzu-5b18a12df2116fcbb4bf10a2becd6cb404af0968.tar.gz
yuzu-5b18a12df2116fcbb4bf10a2becd6cb404af0968.tar.xz
yuzu-5b18a12df2116fcbb4bf10a2becd6cb404af0968.zip
glasm: Implement IAbs64 and INeg64 on GLASM
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_instructions.h4
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp8
2 files changed, 6 insertions, 6 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
index 52420c3c9..d65a474f2 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
@@ -306,9 +306,9 @@ void EmitISub32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
306void EmitISub64(EmitContext& ctx, Register a, Register b); 306void EmitISub64(EmitContext& ctx, Register a, Register b);
307void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b); 307void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
308void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value); 308void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value);
309void EmitINeg64(EmitContext& ctx, Register value); 309void EmitINeg64(EmitContext& ctx, IR::Inst& inst, Register value);
310void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value); 310void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value);
311void EmitIAbs64(EmitContext& ctx, Register value); 311void EmitIAbs64(EmitContext& ctx, IR::Inst& inst, Register value);
312void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift); 312void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift);
313void EmitShiftLeftLogical64(EmitContext& ctx, Register base, Register shift); 313void EmitShiftLeftLogical64(EmitContext& ctx, Register base, Register shift);
314void EmitShiftRightLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift); 314void EmitShiftRightLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift);
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
index 40f48a091..2be91ccfd 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
@@ -34,16 +34,16 @@ void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
34 ctx.Add("MOV.S {},-{};", inst, value); 34 ctx.Add("MOV.S {},-{};", inst, value);
35} 35}
36 36
37void EmitINeg64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] Register value) { 37void EmitINeg64(EmitContext& ctx, IR::Inst& inst, Register value) {
38 throw NotImplementedException("GLASM instruction"); 38 ctx.LongAdd("MOV.S64 {},-{};", inst, value);
39} 39}
40 40
41void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) { 41void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
42 ctx.Add("ABS.S {},{};", inst, value); 42 ctx.Add("ABS.S {},{};", inst, value);
43} 43}
44 44
45void EmitIAbs64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] Register value) { 45void EmitIAbs64(EmitContext& ctx, IR::Inst& inst, Register value) {
46 throw NotImplementedException("GLASM instruction"); 46 ctx.LongAdd("MOV.S64 {},|{}|;", inst, value);
47} 47}
48 48
49void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift) { 49void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift) {