I mirrored the text in the clang language extensions document as closely as possible.
|10864 ↗||(On Diff #56858)|
I'm not sure that we need to special case "mathematically correct". Why not say something like: "the first result is the operation modulo 2^bitwidth, and the second result is 1 iff the operation overflowed."
A more pertinent bit of information here is what is defined to be an overflow: an operation overflows if for any N, "ext(A op B) to iN != (ext(A) to iN) op (ext(B) to iN)" where ext is sext for sign overflow and zext for unsigned overflow.
lgtm, with an optional-to-fix nit
|10863 ↗||(On Diff #57004)|
What I had in mind was:
Each of these intrinsics returns a two-element struct. The first element of this struct contains the result of the corresponding arithmetic operation modulo 2\ :sup:`n`\ , where n is the bit width of the result.
I.e. I don't see a need to special case the overflow or no-overflow
But I'm okay with what you have.