From 58ba6d68bb7909562df3278a3d334846bc6b0495 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 25 Apr 2020 18:01:39 +0300 Subject: [PATCH] Don't use std::popcount (workaround) It seems MSVC uses POPCNT instruction when compiling for SSE2. --- rpcs3/Emu/Cell/PPUTranslator.cpp | 2 +- rpcs3/Emu/Memory/vm.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index b2a291c36ff2..37955380fce1 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -236,7 +236,7 @@ Type* PPUTranslator::ScaleType(Type* type, s32 pow2) uint scaled = type->getScalarSizeInBits(); - verify(HERE), std::popcount(scaled) == 1; + verify(HERE), (scaled & (scaled - 1)) == 0; if (pow2 > 0) { diff --git a/rpcs3/Emu/Memory/vm.cpp b/rpcs3/Emu/Memory/vm.cpp index f9cb7a7a0016..7e2a53d0d596 100644 --- a/rpcs3/Emu/Memory/vm.cpp +++ b/rpcs3/Emu/Memory/vm.cpp @@ -1182,7 +1182,7 @@ namespace vm if (is_write) std::swap(src, dst); - if (size <= 16 && std::popcount(size) == 1 && (addr & (size - 1)) == 0) + if (size <= 16 && (size & (size - 1)) == 0 && (addr & (size - 1)) == 0) { if (is_write) {