And actually use vpblendw
This commit is contained in:
parent
c1f9952cbd
commit
c3f1e74814
|
@ -5601,12 +5601,16 @@ EMITTER(PERMUTE_I32, MATCH(I<OPCODE_PERMUTE, V128<>, I32<>, V128<>, V128<>>)) {
|
||||||
if (i.dest != src3) {
|
if (i.dest != src3) {
|
||||||
e.vpshufd(i.dest, src2, src_control);
|
e.vpshufd(i.dest, src2, src_control);
|
||||||
e.vpshufd(e.xmm0, src3, src_control);
|
e.vpshufd(e.xmm0, src3, src_control);
|
||||||
e.vpblendd(i.dest, e.xmm0, blend_control); // $0 = $1 <blend> $2
|
|
||||||
} else {
|
} else {
|
||||||
e.vmovaps(e.xmm0, src3);
|
e.vmovaps(e.xmm0, src3);
|
||||||
e.vpshufd(i.dest, src2, src_control);
|
e.vpshufd(i.dest, src2, src_control);
|
||||||
e.vpshufd(e.xmm0, e.xmm0, 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 <blend> $2
|
||||||
|
} else {
|
||||||
|
e.vpblendw(i.dest, e.xmm0, blend_control); // $0 = $1 <blend> $2
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Permute by non-constant.
|
// Permute by non-constant.
|
||||||
|
|
Loading…
Reference in New Issue