From 2d4dd8cdc11ec54639691fe762562e4e7f44a232 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sat, 27 Apr 2019 12:54:43 +0100 Subject: [PATCH] x64Emitter: Prefer MOVAPS to MOVAPD There is no reason to use MOVAPD over MOVAPS, for two reasons: * There has never been a microarchitecture with separate single and double domains. * MOVAPD is one byte longer than MOVAPS --- Source/Core/Common/x64Emitter.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Source/Core/Common/x64Emitter.cpp b/Source/Core/Common/x64Emitter.cpp index eb756c3793..19a982d1c2 100644 --- a/Source/Core/Common/x64Emitter.cpp +++ b/Source/Core/Common/x64Emitter.cpp @@ -2180,7 +2180,11 @@ void XEmitter::MOVAPS(X64Reg regOp, const OpArg& arg) } void XEmitter::MOVAPD(X64Reg regOp, const OpArg& arg) { - WriteSSEOp(0x66, sseMOVAPfromRM, regOp, arg); + // Prefer MOVAPS to MOVAPD as there is no reason to use MOVAPD over MOVAPS: + // - They have equivalent functionality. + // - There has never been a microarchitecture with separate single and double domains. + // - MOVAPD is one byte longer than MOVAPS. + MOVAPS(regOp, arg); } void XEmitter::MOVAPS(const OpArg& arg, X64Reg regOp) { @@ -2188,7 +2192,7 @@ void XEmitter::MOVAPS(const OpArg& arg, X64Reg regOp) } void XEmitter::MOVAPD(const OpArg& arg, X64Reg regOp) { - WriteSSEOp(0x66, sseMOVAPtoRM, regOp, arg); + MOVAPS(arg, regOp); } void XEmitter::MOVUPS(X64Reg regOp, const OpArg& arg)