OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [scal-to-vec3.c] - Blame information for rev 695

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
#define vector(elcount, type)  \
2
__attribute__((vector_size((elcount)*sizeof(type)))) type
3
 
4
#define vidx(type, vec, idx) (*((type *) &(vec) + idx))
5
 
6
#define veccompare(type, count, v0, v1) \
7
do {\
8
    int __i; \
9
    for (__i = 0; __i < count; __i++) { \
10
        if (vidx (type, v0, __i) != vidx (type, v1, __i)) \
11
            __builtin_abort (); \
12
    } \
13
} while (0)
14
 
15
 
16
int main (int argc, char *argv[]) {
17
#define fvec_2 (vector(4, float)){2., 2., 2., 2.}
18
#define dvec_2 (vector(2, double)){2., 2.}
19
 
20
    vector(4, float) f0 = {1., 2., 3., 4.};
21
    vector(4, float) f1, f2;
22
 
23
    vector(2, double) d0 = {1., 2.};
24
    vector(2, double) d1, d2;
25
 
26
 
27
    f1 = 2 + f0;  f2 = fvec_2 + f0; veccompare (float, 4, f1, f2);
28
    f1 = 2 - f0;  f2 = fvec_2 - f0; veccompare (float, 4, f1, f2);
29
    f1 = 2 * f0;  f2 = fvec_2 * f0; veccompare (float, 4, f1, f2);
30
    f1 = 2 / f0;  f2 = fvec_2 / f0; veccompare (float, 4, f1, f2);
31
 
32
    f1 = f0 + 2;  f2 = f0 + fvec_2; veccompare (float, 4, f1, f2);
33
    f1 = f0 - 2;  f2 = f0 - fvec_2; veccompare (float, 4, f1, f2);
34
    f1 = f0 * 2;  f2 = f0 * fvec_2; veccompare (float, 4, f1, f2);
35
    f1 = f0 / 2;  f2 = f0 / fvec_2; veccompare (float, 4, f1, f2);
36
 
37
    d1 = 2 + d0;  d2 = dvec_2 + d0; veccompare (double, 2, d1, d2);
38
    d1 = 2 - d0;  d2 = dvec_2 - d0; veccompare (double, 2, d1, d2);
39
    d1 = 2 * d0;  d2 = dvec_2 * d0; veccompare (double, 2, d1, d2);
40
    d1 = 2 / d0;  d2 = dvec_2 / d0; veccompare (double, 2, d1, d2);
41
 
42
    d1 = d0 + 2;  d2 = d0 + dvec_2; veccompare (double, 2, d1, d2);
43
    d1 = d0 - 2;  d2 = d0 - dvec_2; veccompare (double, 2, d1, d2);
44
    d1 = d0 * 2;  d2 = d0 * dvec_2; veccompare (double, 2, d1, d2);
45
    d1 = d0 / 2;  d2 = d0 / dvec_2; veccompare (double, 2, d1, d2);
46
 
47
    return 0;
48
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.