This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Boolean Vector, patch 3/5] Use boolean vector in C/C++ FE
- From: Ilya Enkovich <enkovich dot gnu at gmail dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 13 Oct 2015 18:59:45 +0300
- Subject: Re: [Boolean Vector, patch 3/5] Use boolean vector in C/C++ FE
- Authentication-results: sourceware.org; auth=none
- References: <20151002140449 dot GG26618 at msticlxl57 dot ims dot intel dot com> <561828E4 dot 6070905 at redhat dot com> <20151013141433 dot GM63757 at msticlxl57 dot ims dot intel dot com> <561D2659 dot 7050600 at redhat dot com>
2015-10-13 18:42 GMT+03:00 Jeff Law <law@redhat.com>:
> On 10/13/2015 08:14 AM, Ilya Enkovich wrote:
>>>>
>>>> +
>>>> +static tree
>>>> +build_vec_cmp (tree_code code, tree type,
>>>> + tree arg0, tree arg1)
>>>> +{
>>>> + tree zero_vec = build_zero_cst (type);
>>>> + tree minus_one_vec = build_minus_one_cst (type);
>>>> + tree cmp_type = build_same_sized_truth_vector_type (type);
>>>> + tree cmp = build2 (code, cmp_type, arg0, arg1);
>>>> + return build3 (VEC_COND_EXPR, type, cmp, minus_one_vec, zero_vec);
>>>> +}
>>>
>>> Isn't this implementation the same for C & C++? Does it make sense to
>>> put
>>> it in c-family/c-common.c?
>>
>>
>> C++ version calls fold_if_not_in_template for generated comparison. It is
>> required there to successfully recognize vector MIN, MAX and ABS templates
>> for vector ?: conditional operator. Vector form of ?: conditional operator
>> is supported for C++ only.
>
> Ah, nevermind then.
>
>
>>>
>>> However, more generally, do we need to do anything for the other
>>> languages?
>>
>>
>> Looking into that I got an impression vector modes are used by C/C++
>> vector extensions only. And I think regression testing would reveal some
>> failures otherwise.
>
> Maybe this stuff hasn't bled into the Fortran front-end, but the gfortran
> front-end certainly has OpenMP support which presumably has vector
> extensions.
OpenMP extension doesn't produce any vector code in front-end. Code
will be produced by vectorizer anyway.
>
> The fact that nothing's failing in the testsuite is encouraging, but it'd be
> worth spending a few minutes taking a look to see if there's something that
> might need updating.
I also grepped for VEC_COND_EXPR and it never occurs in front-ends
other than C/C++.
Thanks,
Ilya
>
> Jeff
>