The intermediate value can be larger than an u16, so @truncate is needed to match the behavior of musl.