From c3f1e74814308289120fc6dccf1494eb8543351a Mon Sep 17 00:00:00 2001 From: "Dr. Chat" Date: Tue, 5 May 2015 12:09:45 -0500 Subject: [PATCH] And actually use vpblendw --- src/xenia/cpu/backend/x64/x64_sequences.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/xenia/cpu/backend/x64/x64_sequences.cc b/src/xenia/cpu/backend/x64/x64_sequences.cc index 2f1a39e8e..a651b91f0 100644 --- a/src/xenia/cpu/backend/x64/x64_sequences.cc +++ b/src/xenia/cpu/backend/x64/x64_sequences.cc @@ -5601,12 +5601,16 @@ EMITTER(PERMUTE_I32, MATCH(I, I32<>, V128<>, V128<>>)) { if (i.dest != src3) { e.vpshufd(i.dest, src2, src_control); e.vpshufd(e.xmm0, src3, src_control); - e.vpblendd(i.dest, e.xmm0, blend_control); // $0 = $1 $2 } else { e.vmovaps(e.xmm0, src3); e.vpshufd(i.dest, src2, src_control); e.vpshufd(e.xmm0, e.xmm0, src_control); - e.vpblendd(i.dest, e.xmm0, blend_control); + } + + if (e.cpu()->has(Xbyak::util::Cpu::tAVX2)) { + e.vpblendd(i.dest, e.xmm0, blend_control); // $0 = $1 $2 + } else { + e.vpblendw(i.dest, e.xmm0, blend_control); // $0 = $1 $2 } } else { // Permute by non-constant.