From aaae437ca327dae4062c97d083cba29e00687af0 Mon Sep 17 00:00:00 2001 From: isJuhn Date: Wed, 4 Sep 2019 04:01:01 +0200 Subject: [PATCH] PPUInterpreter.cpp: remove SSE4.1 requirement in FCTIWZ, FCTID and FCTIDZ --- rpcs3/Emu/Cell/PPUInterpreter.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUInterpreter.cpp b/rpcs3/Emu/Cell/PPUInterpreter.cpp index dec38a913a..346858447f 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/PPUInterpreter.cpp @@ -4830,7 +4830,7 @@ bool ppu_interpreter::FCTIWZ(ppu_thread& ppu, ppu_opcode_t op) { const auto b = _mm_load_sd(&ppu.fpr[op.frb]); const auto res = _mm_xor_si128(_mm_cvttpd_epi32(b), _mm_castpd_si128(_mm_cmpge_pd(b, _mm_set1_pd(0x80000000)))); - ppu.fpr[op.frd] = std::bit_cast(_mm_extract_epi32(res, 0)); + ppu.fpr[op.frd] = std::bit_cast(_mm_cvtsi128_si32(res)); if (UNLIKELY(op.rc)) fmt::throw_exception("%s: op.rc", __func__); //ppu_cr_set(ppu, 1, ppu.fpscr.fg, ppu.fpscr.fl, ppu.fpscr.fe, ppu.fpscr.fu); return true; } @@ -5022,7 +5022,7 @@ bool ppu_interpreter::FCTID(ppu_thread& ppu, ppu_opcode_t op) { const auto b = _mm_load_sd(&ppu.fpr[op.frb]); const auto res = _mm_xor_si128(_mm_set1_epi64x(_mm_cvtsd_si64(b)), _mm_castpd_si128(_mm_cmpge_pd(b, _mm_set1_pd(f64(1ull << 63))))); - ppu.fpr[op.frd] = std::bit_cast(_mm_extract_epi64(res, 0)); + ppu.fpr[op.frd] = std::bit_cast(_mm_cvtsi128_si64(res)); if (UNLIKELY(op.rc)) fmt::throw_exception("%s: op.rc", __func__); //ppu_cr_set(ppu, 1, ppu.fpscr.fg, ppu.fpscr.fl, ppu.fpscr.fe, ppu.fpscr.fu); return true; } @@ -5031,7 +5031,7 @@ bool ppu_interpreter::FCTIDZ(ppu_thread& ppu, ppu_opcode_t op) { const auto b = _mm_load_sd(&ppu.fpr[op.frb]); const auto res = _mm_xor_si128(_mm_set1_epi64x(_mm_cvttsd_si64(b)), _mm_castpd_si128(_mm_cmpge_pd(b, _mm_set1_pd(f64(1ull << 63))))); - ppu.fpr[op.frd] = std::bit_cast(_mm_extract_epi64(res, 0)); + ppu.fpr[op.frd] = std::bit_cast(_mm_cvtsi128_si64(res)); if (UNLIKELY(op.rc)) fmt::throw_exception("%s: op.rc", __func__); //ppu_cr_set(ppu, 1, ppu.fpscr.fg, ppu.fpscr.fl, ppu.fpscr.fe, ppu.fpscr.fu); return true; }