On 03/20/2014 06:38 PM, Bill Schmidt wrote:
> -      rtx splat = gen_rtx_VEC_DUPLICATE (V16QImode,
> -                                      gen_rtx_CONST_INT (QImode, -1));
> +      rtx notx = gen_rtx_NOT (V16QImode, force_reg (V16QImode, x));
> +      rtx andx = gen_rtx_AND (V16QImode, notx, notx);
>        rtx tmp = gen_reg_rtx (V16QImode);
> -      emit_move_insn (tmp, splat);
> -      x = gen_rtx_MINUS (V16QImode, tmp, force_reg (V16QImode, x));
> -      emit_move_insn (tmp, x);
> +      emit_move_insn (tmp, andx);

Existing problem, and I know it's done all over that backend, but one shouldn't
use emit_move_insn on expressions like that.  Moves should be between RTX_OBJ
things: registers, constants, and memory.

Better to just do "emit_insn (gen_rtx_SET (VOIDmode, tmp, andx));".


r~

Reply via email to