Marc Glisse <marc.gli...@inria.fr> writes:
> On Tue, 8 May 2012, Richard Sandiford wrote:
>> I know you said that generalising it could be done later,
>> and that's fine, but it looks in some ways like it would
>> be easier to go straight for the more general:
>>
>>        && GET_CODE (trueop0) == VEC_CONCAT
>>        && GET_CODE (XEXP (trueop0, 0)) == VEC_CONCAT
>>        && GET_MODE (XEXP (trueop0, 0)) == mode
>>        && GET_CODE (XEXP (trueop0, 1)) == VEC_CONCAT
>>        && GET_MODE (XEXP (trueop0, 1)) == mode)
>>      {
>>        unsigned int i0 = INTVAL (XVECEXP (trueop1, 0, 0));
>>        unsigned int i1 = INTVAL (XVECEXP (trueop1, 0, 1));
>>        rtx op0, op1;
>>
>>        gcc_assert (i0 < 4 && i1 < 4);
>>        op0 = XEXP (XEXP (trueop0, i0 / 2), i0 % 2);
>>        op1 = XEXP (XEXP (trueop0, i1 / 2), i1 % 2);
>>
>>        return simplify_gen_binary (VEC_CONCAT, mode, op0, op1);
>>      }
>
> Yes, I hesitated.

Realised afterwards that both versions need to check
GET_MODE_NUNITS (mode) == 2, because we're requiring OP0 and OP1
to be scalar.  Sorry for not noticing first time.

Richard

Reply via email to