[x64] Fix AVX2 optimization path for VECTOR_SHL_V128
Ensure the optimized path matches the fallback behavior
This commit is contained in:
@@ -947,9 +947,9 @@ struct VECTOR_SHL_V128
|
|||||||
e.vpshufb(e.xmm2, e.xmm2, e.GetXmmConstPtr(XMMIntsToBytes));
|
e.vpshufb(e.xmm2, e.xmm2, e.GetXmmConstPtr(XMMIntsToBytes));
|
||||||
e.vpshufb(e.xmm3, e.xmm3, e.GetXmmConstPtr(XMMIntsToBytes));
|
e.vpshufb(e.xmm3, e.xmm3, e.GetXmmConstPtr(XMMIntsToBytes));
|
||||||
|
|
||||||
e.vpunpckldq(e.xmm0, e.xmm0, e.xmm1);
|
e.vpunpckldq(e.xmm0, e.xmm0, e.xmm2);
|
||||||
e.vpunpckldq(e.xmm2, e.xmm2, e.xmm3);
|
e.vpunpckldq(e.xmm1, e.xmm1, e.xmm3);
|
||||||
e.vpunpcklqdq(i.dest, e.xmm0, e.xmm2);
|
e.vpunpcklqdq(i.dest, e.xmm0, e.xmm1);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
vec128_t constmask = i.src2.constant();
|
vec128_t constmask = i.src2.constant();
|
||||||
@@ -1001,9 +1001,9 @@ struct VECTOR_SHL_V128
|
|||||||
e.vpshufb(e.xmm2, e.xmm2, e.GetXmmConstPtr(XMMIntsToBytes));
|
e.vpshufb(e.xmm2, e.xmm2, e.GetXmmConstPtr(XMMIntsToBytes));
|
||||||
e.vpshufb(e.xmm3, e.xmm3, e.GetXmmConstPtr(XMMIntsToBytes));
|
e.vpshufb(e.xmm3, e.xmm3, e.GetXmmConstPtr(XMMIntsToBytes));
|
||||||
|
|
||||||
e.vpunpckldq(e.xmm0, e.xmm0, e.xmm1);
|
e.vpunpckldq(e.xmm0, e.xmm0, e.xmm2);
|
||||||
e.vpunpckldq(e.xmm2, e.xmm2, e.xmm3);
|
e.vpunpckldq(e.xmm1, e.xmm1, e.xmm3);
|
||||||
e.vpunpcklqdq(i.dest, e.xmm0, e.xmm2);
|
e.vpunpcklqdq(i.dest, e.xmm0, e.xmm1);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user