VectorOps: Make SVE shift==0 case symmetric with ASIMD

Ensures that we have consistent behavior.
This commit is contained in:
LC committed 2026-07-13 10:26:42 -04:00
1 parent 46ec2797ff
commit 24720b67da
1 file changed
+7 -2
@@ -3296,8 +3296,13 @@ DEF_OP(VUShrNI) {
const auto Vector = GetVReg(Op->Vector);
if (HostSupportsSVE256 && Is256Bit) {
shrnb(SubRegSize, Dst.Z(), Vector.Z(), BitShift);
uzp1(SubRegSize, Dst.Z(), Dst.Z(), Dst.Z());
if (BitShift == 0) {
mov_imm(ARMEmitter::SubRegSize::i64Bit, VTMP1.Z(), 0);
uzp1(SubRegSize, Dst.Z(), Dst.Z(), VTMP1.Z());
} else {
shrnb(SubRegSize, Dst.Z(), Vector.Z(), BitShift);
uzp1(SubRegSize, Dst.Z(), Dst.Z(), Dst.Z());
}
} else {
if (BitShift == 0) {
xtn(SubRegSize, Dst.D(), Vector.D());