On Fri, Sep 30, 2011 at 4:01 PM, Georg-Johann Lay <a...@gjlay.de> wrote:
> Artem Shinkarov schrieb:
>> Here is a new version of the patch which considers the changes from
>> 2011-09-02  Richard Guenther
>>
>>
>> ChangeLog
>>
>> 20011-09-06 Artjoms Sinkarovs <artyom.shinkar...@gmail.com>
>>
>>        gcc/
>>        * fold-const.c (constant_boolean_node): Adjust the meaning
>>        of boolean for vector types: true = {-1,..}, false = {0,..}.
>>        (fold_unary_loc): Avoid conversion of vector comparison to
>>        boolean type.
>>        * expr.c (expand_expr_real_2): Expand vector comparison by
>>        building an appropriate VEC_COND_EXPR.
>>        * c-typeck.c (build_binary_op): Typecheck vector comparisons.
>>        (c_objc_common_truthvalue_conversion): Adjust.
>>        * tree-vect-generic.c (do_compare): Helper function.
>>        (expand_vector_comparison): Check if hardware supports
>>        vector comparison of the given type or expand vector
>>        piecewise.
>>        (expand_vector_operation): Treat comparison as binary
>>        operation of vector type.
>>        (expand_vector_operations_1): Adjust.
>>        * tree-cfg.c (verify_gimple_comparison): Adjust.
>>
>>        gcc/config/i386
>>        * i386.c (ix86_expand_sse_movcc): Consider a case when
>>        vcond operators are {-1,..} and {0,..}.
>>
>>        gcc/doc
>>        * extend.texi: Adjust.
>>
>>        gcc/testsuite
>>        * gcc.c-torture/execute/vector-compare-1.c: New test.
>>        * gcc.c-torture/execute/vector-compare-2.c: New test.
>>        * gcc.dg/vector-compare-1.c: New test.
>>        * gcc.dg/vector-compare-2.c: New test.
>>
>> bootstrapped and tested on x86_64-unknown-linux-gnu.
>>
>>
>> Thanks,
>> Artem.
>
> Hi Artem,
>
> the new test case gcc.c-torture/execute/vector-compare-1.c causes bunch of
> FAILS in regression tests for avr-unknown-none (see attachment).
>
> The target has
>
> 2 = sizeof (short)
> 2 = sizeof (int)
> 4 = sizeof (long int)
> 8 = sizeof (long long int)
>
> Could you fix that? I.e. parametrize sizeof(int) out or skip the test by 
> means of
>
> /* { dg-require-effective-target int32plus } */
>
> or similar.
>
> Thanks, Johann
>
>
>
>
>
>
>
>
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> compiler exited with status 1
> output is:
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
>
> FAIL: gcc.c-torture/execute/vector-compare-1.c compilation,  -O3 
> -fomit-frame-pointer -funroll-loops
> UNRESOLVED: gcc.c-torture/execute/vector-compare-1.c execution,  -O3 
> -fomit-frame-pointer -funroll-loops
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> compiler exited with status 1
> output is:
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
>
> FAIL: gcc.c-torture/execute/vector-compare-1.c compilation,  -O3 
> -fomit-frame-pointer -funroll-all-loops -finline-functions
> UNRESOLVED: gcc.c-torture/execute/vector-compare-1.c execution,  -O3 
> -fomit-frame-pointer -funroll-all-loops -finline-functions
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> compiler exited with status 1
> output is:
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
>
> FAIL: gcc.c-torture/execute/vector-compare-1.c compilation,  -O3 -g
> UNRESOLVED: gcc.c-torture/execute/vector-compare-1.c execution,  -O3 -g
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> compiler exited with status 1
> output is:
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c: In function 'main':
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:109:5: error: 
> incompatible types when assigning to type '__vector(4) int' from type 
> '__vector(4) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
> ./gcc/testsuite/gcc.c-torture/execute/vector-compare-1.c:118:5: error: 
> incompatible types when assigning to type '__vector(2) long long int' from 
> type '__vector(2) long int'
>
>

Hi

The problem actually happens when we compare float vector with float
vector, it is assumed that we should get int vector as a result, but
it turns out that we are getting long int.

The same with double, we assume that sizeof (double) == sizeof (long
long). But as it seems double has the same size as float.

Hm, I can put conditional of sort:
if (sizeof (doulbe) == sizeof (long long)) and others. Or may be there
is more elegant way of solving this?

I can fix it, but keep in mind that I don't have a permission to
commit to the trunk.


Thanks,
Artem.

Reply via email to