The 'nsz' flag is different than 'nnan' or 'ninf' in that it does not create poison. Make that explicit in the LangRef and fix ValueTracking analysis that misinterpreted the definition.
This manifests as bugs in InstSimplify shown in the test diffs and as discussed in PR45778:
https://bugs.llvm.org/show_bug.cgi?id=45778