glasm: Add fp min/max insts and fix store for fp64 on GLASM
This commit is contained in:
parent
43a448d98d
commit
7703d65f23
src/shader_recompiler/backend/glasm
@ -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);
|
ctx.LongAdd("MAD.F64 {}.x,{},{},{};", inst, a, b, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitFPMax32([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] ScalarF32 a,
|
void EmitFPMax32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b) {
|
||||||
[[maybe_unused]] ScalarF32 b) {
|
ctx.Add("MAX.F {}.x,{},{};", inst, a, b);
|
||||||
throw NotImplementedException("GLASM instruction");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitFPMax64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 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,
|
void EmitFPMin32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b) {
|
||||||
[[maybe_unused]] ScalarF32 b) {
|
ctx.Add("MIN.F {}.x,{},{};", inst, a, b);
|
||||||
throw NotImplementedException("GLASM instruction");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmitFPMin64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 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,
|
void EmitFPMul16([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
|
||||||
|
@ -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 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 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 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 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 EmitFPMin64(EmitContext& ctx, IR::Inst& inst, ScalarF64 a, ScalarF64 b);
|
||||||
void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, Register a, Register b);
|
void EmitFPMul16(EmitContext& ctx, IR::Inst& inst, Register a, Register b);
|
||||||
void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b);
|
void EmitFPMul32(EmitContext& ctx, IR::Inst& inst, ScalarF32 a, ScalarF32 b);
|
||||||
|
Loading…
Reference in New Issue
Block a user