https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51492
--- Comment #16 from Li Pan <pan2.li at intel dot com> ---
I have a try like below and finally have the Standard Name "SAT_ADD". Could you
please help to double-check if my understanding is correct?
Given below example code below:
typedef unsigned int uint32_t;
uint32_t
sat_add (uint32_t x, uint32_t y)
{
return (x + y) | - ((x + y) < x);
}
And then add one simpify to match.pd and define new DEF_INTERNAL_OPTAB_FN for
it. Then we have the SAT_ADD representation after expand.
uint32_t sat_add (uint32_t x, uint32_t y)
{
uint32_t _6;
;; basic block 2, loop depth 0
;; pred: ENTRY
_6 = .SAT_ADD (x_4(D), y_5(D)); [tail call]
return _6;
;; succ: EXIT
}
If everything goes well, I will prepare the patch for it later. Thanks.