https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111280
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The current requirements are that the two operand ifn calls appear either with large/huge _BitInt first argument (then the second argument can be anything), or that the second argument is equal to CL?_DEFINED_VALUE_AT_ZERO. That is because the expansion to RTL hasn't been changed to emit conditionals if the value is different from what the backend actually supports. We can change that of course. Though, if we pick some specific value in there, we would need to ensure that value in RTL and so emit conditionals. Perhaps we need a different representation where we say we don't care what exact return value it has, as long as it is in the range [a,b] (e.g. 3 argument case). And then backend either emitting conditionals if it can't guarantee that range, or just insn, or say masking of the result. Or have some way to say we don't care about what exact value it is, but it is not UB (so completely unspecified value).
