From 328422b7401c1695f0d76da42f1e04562d201da2 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 7 Aug 2016 21:02:16 +0100 Subject: [PATCH] RegAlloc: HostCall flushes all XMM regsiters --- src/backend_x64/reg_alloc.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/backend_x64/reg_alloc.cpp b/src/backend_x64/reg_alloc.cpp index 990d8bd7..cc2a59d8 100644 --- a/src/backend_x64/reg_alloc.cpp +++ b/src/backend_x64/reg_alloc.cpp @@ -314,6 +314,11 @@ void RegAlloc::HostCall(IR::Inst* result_def, IR::Value arg0_use, IR::Value arg1 } } + // Flush all xmm registers + for (auto xmm : any_xmm) { + ScratchRegister({xmm}); + } + ScratchRegister({HostLoc::RSP}); code->MOV(64, Gen::R(Gen::RSP), Gen::MDisp(Gen::R15, offsetof(JitState, save_host_RSP))); }