On Mon, May 11, 2020 at 09:31:41PM -0500, Bill Schmidt wrote:
> On 5/11/20 7:16 AM, Segher Boessenkool wrote:
> >> * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
> >> Change fourth operand for vec_ternarylogic to require
> >> compatibility with unsigned SImode rather than unsigned QImode.
> >Is it still checked for range 0..255 though? (If the compiler can
> >derive that).
>
> Yep, we already have this:
>
> if (icode == CODE_FOR_xxeval)
> {
> /* Only allow 8-bit unsigned literals. */
> STRIP_NOPS (arg3);
> if (TREE_CODE (arg3) != INTEGER_CST
> || TREE_INT_CST_LOW (arg3) & ~0xff)
> {
> error ("argument 4 must be an 8-bit unsigned literal");
> return CONST0_RTX (tmode);
> }
> }
That test only makes sure that bits 0x00000000ffffff00 are zero -- which
does work correctly here because we do know the operand is SImode.
Tricky.
Segher