Similar to D2798, please refactor first as one commit. Please make sure the changed "underflow to zero" case is covered by a test case. http://reviews.llvm.org/D2799