You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As pointed out in https://github.com/dotnet/runtime/pull/102903/files#diff-f10507b9e232d4e19690c6a45d1372a35b663df21d62d2fb5011e2d360aa4a4aR49-R59, the LoadVector*NonFaultingSignExtend* and LoadVector*NonFaultingZeroExtend* APIs do not have explicit mask argument, which means they can be technically wrapped in ConditionalSelect. But under the hood, the instruction has Pg/Z semantics to load the values in vector. As such, if targetReg == falseReg, it does not play well because the instruction will overwrite the contents of falseReg and we will not get the desired result.
As pointed out in https://github.com/dotnet/runtime/pull/102903/files#diff-f10507b9e232d4e19690c6a45d1372a35b663df21d62d2fb5011e2d360aa4a4aR49-R59, the
LoadVector*NonFaultingSignExtend*andLoadVector*NonFaultingZeroExtend*APIs do not have explicit mask argument, which means they can be technically wrapped inConditionalSelect. But under the hood, the instruction hasPg/Zsemantics to load the values in vector. As such, iftargetReg == falseReg, it does not play well because the instruction will overwrite the contents offalseRegand we will not get the desired result.