diff options
| author | 2021-05-10 03:55:33 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:31 -0400 | |
| commit | 5b18a12df2116fcbb4bf10a2becd6cb404af0968 (patch) | |
| tree | 1568ddb378759cbf0b0176aa3ecedac1c0b15436 | |
| parent | shader: Add floating-point rounding to I2F (diff) | |
| download | yuzu-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.h | 4 | ||||
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp | 8 |
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); | |||
| 306 | void EmitISub64(EmitContext& ctx, Register a, Register b); | 306 | void EmitISub64(EmitContext& ctx, Register a, Register b); |
| 307 | void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b); | 307 | void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b); |
| 308 | void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value); | 308 | void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value); |
| 309 | void EmitINeg64(EmitContext& ctx, Register value); | 309 | void EmitINeg64(EmitContext& ctx, IR::Inst& inst, Register value); |
| 310 | void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value); | 310 | void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value); |
| 311 | void EmitIAbs64(EmitContext& ctx, Register value); | 311 | void EmitIAbs64(EmitContext& ctx, IR::Inst& inst, Register value); |
| 312 | void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift); | 312 | void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift); |
| 313 | void EmitShiftLeftLogical64(EmitContext& ctx, Register base, Register shift); | 313 | void EmitShiftLeftLogical64(EmitContext& ctx, Register base, Register shift); |
| 314 | void EmitShiftRightLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift); | 314 | void 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 | ||
| 37 | void EmitINeg64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] Register value) { | 37 | void EmitINeg64(EmitContext& ctx, IR::Inst& inst, Register value) { |
| 38 | throw NotImplementedException("GLASM instruction"); | 38 | ctx.LongAdd("MOV.S64 {},-{};", inst, value); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | void EmitIAbs32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) { | 41 | void 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 | ||
| 45 | void EmitIAbs64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] Register value) { | 45 | void EmitIAbs64(EmitContext& ctx, IR::Inst& inst, Register value) { |
| 46 | throw NotImplementedException("GLASM instruction"); | 46 | ctx.LongAdd("MOV.S64 {},|{}|;", inst, value); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift) { | 49 | void EmitShiftLeftLogical32(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, ScalarU32 shift) { |