This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: patch: convert scalar literals to vector constants (PR/7277)


!       cst[0] = INTVAL (x);
!       cst[1] = 0;

CONST_INT sign-extends.

How about:?


      if (INTVAL (x) < 0)
        cst[1] = (unsigned HOST_WIDE_INT) -1;

Well, that works for integer vector modes.  What about
fp vector modes?  And how about

Hadn't thought of that. What do you suggest gets generated for this?:


typedef int v __attribute__((mode(V2SF)));

	v null(void)
	{
  	return (v) 0x1234LL;
	}

Right now we are generating:

(const_vector:V2SF [
        (const_int 0 [0x0])
        (const_int 4660 [0x1234])
    ])

Which I'm not particularly fond of. Perhaps:?

(const_vector:V2SF [
        (const_double 0 0)
        (const_double 0 0x1234)
    ])

(v4sf)(v8hi)-1

where this routine should be called twice, the second
time to convert one vector mode to another?

Ok, I'm adding:


  if (VECTOR_MODE_P (mode) && CONSTANT_P (x)
>>>   && GET_CODE (x) != CONST_VECTOR
    return convert_const_to_vector (mode, x);

...the code will drop through and convert_mode() below can handle vector conversions.

Aldy


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]