glasm: Implement int64 add and subtract
This commit is contained in:
parent
7fdf0d7d33
commit
0794273870
|
@ -299,9 +299,9 @@ void EmitFPIsNan16(EmitContext& ctx, Register value);
|
||||||
void EmitFPIsNan32(EmitContext& ctx, IR::Inst& inst, ScalarF32 value);
|
void EmitFPIsNan32(EmitContext& ctx, IR::Inst& inst, ScalarF32 value);
|
||||||
void EmitFPIsNan64(EmitContext& ctx, IR::Inst& inst, ScalarF64 value);
|
void EmitFPIsNan64(EmitContext& ctx, IR::Inst& inst, ScalarF64 value);
|
||||||
void EmitIAdd32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
|
void EmitIAdd32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
|
||||||
void EmitIAdd64(EmitContext& ctx, Register a, Register b);
|
void EmitIAdd64(EmitContext& ctx, IR::Inst& inst, Register a, Register b);
|
||||||
void EmitISub32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
|
void EmitISub32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
|
||||||
void EmitISub64(EmitContext& ctx, Register a, Register b);
|
void EmitISub64(EmitContext& ctx, IR::Inst& inst, Register a, Register b);
|
||||||
void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
|
void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b);
|
||||||
void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value);
|
void EmitINeg32(EmitContext& ctx, IR::Inst& inst, ScalarS32 value);
|
||||||
void EmitINeg64(EmitContext& ctx, IR::Inst& inst, Register value);
|
void EmitINeg64(EmitContext& ctx, IR::Inst& inst, Register value);
|
||||||
|
|
|
@ -37,18 +37,16 @@ void EmitIAdd32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitIAdd64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] Register a,
|
void EmitIAdd64(EmitContext& ctx, IR::Inst& inst, Register a, Register b) {
|
||||||
[[maybe_unused]] Register b) {
|
ctx.LongAdd("ADD.S64 {}.x,{}.x,{}.x;", inst, a, b);
|
||||||
throw NotImplementedException("GLASM instruction");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitISub32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
|
void EmitISub32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
|
||||||
ctx.Add("SUB.S {}.x,{},{};", inst, a, b);
|
ctx.Add("SUB.S {}.x,{},{};", inst, a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitISub64([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] Register a,
|
void EmitISub64(EmitContext& ctx, IR::Inst& inst, Register a, Register b) {
|
||||||
[[maybe_unused]] Register b) {
|
ctx.LongAdd("SUB.S64 {}.x,{}.x,{}.x;", inst, a, b);
|
||||||
throw NotImplementedException("GLASM instruction");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
|
void EmitIMul32(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
|
||||||
|
|
Reference in New Issue