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: [RFC C++] Turn on builtin_shuffle for C++.


On 15 June 2012 20:04, Marc Glisse <marc.glisse@inria.fr> wrote:
> On Fri, 15 Jun 2012, Ramana Radhakrishnan wrote:
>
>> On 15 June 2012 18:18, Marc Glisse <marc.glisse@inria.fr> wrote:
>>>
>>> On Fri, 15 Jun 2012, Ramana Radhakrishnan wrote:
>>>
>>>>> I just noticed this part. Rereading my comment in
>>>>>
>>>>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51033#c22
>>>>
>>>>
>>>>
>>>> I haven't been able to make it break with -std=c++11 . Is there
>>>> something I'm missing here ?
>>>
>>>
>>>
>>> I don't remember. It might just be that trying to create a constexpr
>>> vector
>>> variable or calling __builtin_shuffle on it ICEs instead of giving an
>>> error.
>>> I can keep a note to make some tests at the end of July (I will be mostly
>>> away until then), but I believe the code from comment 22 is safer than
>>> the
>>> one from comment 20, if memory serves.
>>
>>
>> I'm not qualified enough to take a call on what's better in this case
>> and will have to defer to Jason and the C++ maintainers on this one.
>>
>> Now that you've said this I decided to go back and throw more tests
>> through it
>> I've tried to chug through most of the testcases for __builtin_shuffle
>> including a few of my own the simplest of which I show below trying to
>> trigger this issue but can't seem to do so.
>
>
> Maybe something like:
>
> #include <x86intrin.h>
> int main(){
> ?constexpr __m128d x={1.,2.};
> ?constexpr __m128i y={1,0};
> ?constexpr __m128d z=__builtin_shuffle(x,y);
> }
>
> ?
> (sorry for the x86 specific code, should be easy to adapt)
>
> See also:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53094
>
> Long term, vectors should be literals. But we need something to avoid
> crashes on operator[] and __builtin_shuffle (ideally implementing the
> constant version of them). Keeping vectors as non-literals (what I was
> suggesting) is quite a crude hack. Maybe having them as literals now is a
> good thing, but it would be good to avoid the ICEs.

I've submitted a fresh patch for that over at
http://gcc.gnu.org/ml/gcc-patches/2012-06/msg01165.html . thought it
better than conflating the 2 threads.


regards,
Ramana


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