diff options
Diffstat (limited to 'src/common/x64')
| -rw-r--r-- | src/common/x64/xbyak_abi.h | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/src/common/x64/xbyak_abi.h b/src/common/x64/xbyak_abi.h index d15e1aaf0..1dcd147b6 100644 --- a/src/common/x64/xbyak_abi.h +++ b/src/common/x64/xbyak_abi.h | |||
| @@ -223,40 +223,4 @@ inline void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, std::bits | |||
| 223 | } | 223 | } |
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | inline size_t ABI_PushRegistersAndAdjustStackGPS(Xbyak::CodeGenerator& code, std::bitset<32> regs, | ||
| 227 | size_t rsp_alignment, | ||
| 228 | size_t needed_frame_size = 0) { | ||
| 229 | s32 subtraction, xmm_offset; | ||
| 230 | ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); | ||
| 231 | |||
| 232 | for (std::size_t i = 0; i < regs.size(); ++i) { | ||
| 233 | if (regs[i] && ABI_ALL_GPRS[i]) { | ||
| 234 | code.push(IndexToReg64(static_cast<int>(i))); | ||
| 235 | } | ||
| 236 | } | ||
| 237 | |||
| 238 | if (subtraction != 0) { | ||
| 239 | code.sub(code.rsp, subtraction); | ||
| 240 | } | ||
| 241 | |||
| 242 | return ABI_SHADOW_SPACE; | ||
| 243 | } | ||
| 244 | |||
| 245 | inline void ABI_PopRegistersAndAdjustStackGPS(Xbyak::CodeGenerator& code, std::bitset<32> regs, | ||
| 246 | size_t rsp_alignment, size_t needed_frame_size = 0) { | ||
| 247 | s32 subtraction, xmm_offset; | ||
| 248 | ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset); | ||
| 249 | |||
| 250 | if (subtraction != 0) { | ||
| 251 | code.add(code.rsp, subtraction); | ||
| 252 | } | ||
| 253 | |||
| 254 | // GPRs need to be popped in reverse order | ||
| 255 | for (int i = 15; i >= 0; i--) { | ||
| 256 | if (regs[i]) { | ||
| 257 | code.pop(IndexToReg64(i)); | ||
| 258 | } | ||
| 259 | } | ||
| 260 | } | ||
| 261 | |||
| 262 | } // namespace Common::X64 | 226 | } // namespace Common::X64 |