MCPcopy Create free account
hub / github.com/FEX-Emu/FEX / FADD

Method FADD

FEXCore/Source/Interface/Core/OpcodeDispatcher/X87.cpp:188–216  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186}
187
188void OpDispatchBuilder::FADD(OpcodeArgs, IR::OpSize Width, bool Integer, OpDispatchBuilder::OpResult ResInST0) {
189 if (Op->Src[0].IsNone()) { // Implicit argument case
190 auto Offset = Op->OP & 7;
191 auto St0 = 0;
192 if (ResInST0 == OpResult::RES_STI) {
193 _F80AddStack(Offset, St0);
194 } else {
195 _F80AddStack(St0, Offset);
196 }
197 if (Op->TableInfo->Flags & X86Tables::InstFlags::FLAGS_POP) {
198 _PopStackDestroy();
199 }
200 return;
201 }
202
203 LOGMAN_THROW_A_FMT(Width != OpSize::f80Bit, "No 80-bit floats from memory");
204 // We have one memory argument
205 Ref Arg {};
206 if (Integer) {
207 Arg = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags);
208 Arg = _F80CVTToInt(Arg, Width);
209 } else {
210 Arg = LoadSource(FPRClass, Op, Op->Src[0], Op->Flags);
211 Arg = _F80CVTTo(Arg, Width);
212 }
213
214 // top of stack is at offset zero
215 _F80AddValue(0, Arg);
216}
217
218void OpDispatchBuilder::FMUL(OpcodeArgs, IR::OpSize Width, bool Integer, OpDispatchBuilder::OpResult ResInST0) {
219 if (Op->Src[0].IsNone()) { // Implicit argument case

Callers

nothing calls this directly

Calls 1

IsNoneMethod · 0.80

Tested by

no test coverage detected