When the destination is a 32bit GPR, when the resulting compare failed we were zexting the destination registeron accident. Thus clearing the upper 32bits when it shouldn't have changed.