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-vec2.c] - Blame information for rev 801

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 operl(a, b, op) (a op b)
7
#define operr(a, b, op) (b op a)
8
 
9
#define check(type, count, vec0, vec1, num, op, lr) \
10
do {\
11
    int __i; \
12
    for (__i = 0; __i < count; __i++) {\
13
        if (vidx (type, vec1, __i) != oper##lr (num, vidx (type, vec0, __i), op)) \
14
            __builtin_abort (); \
15
    }\
16
} while (0)
17
 
18
#define veccompare(type, count, v0, v1) \
19
do {\
20
    int __i; \
21
    for (__i = 0; __i < count; __i++) { \
22
        if (vidx (type, v0, __i) != vidx (type, v1, __i)) \
23
            __builtin_abort (); \
24
    } \
25
} while (0)
26
 
27
 
28
long __attribute__ ((noinline)) vlng () {   return (long)42; }
29
int  __attribute__ ((noinline)) vint () {   return (int) 43; }
30
short __attribute__ ((noinline)) vsrt () {   return (short)42; }
31
char __attribute__ ((noinline)) vchr () {    return (char)42; }
32
 
33
 
34
int main (int argc, char *argv[]) {
35
    vector(16, char) c0 = {argc, 1,2,3,4,5,6,7, argc, 1,2,3,4,5,6,7};
36
    vector(16, char) c1;
37
 
38
    vector(8, short) s0 = {argc, 1,2,3,4,5,6,7};
39
    vector(8, short) s1;
40
 
41
    vector(4, int) i0 = {argc, 1, 2, 3};
42
    vector(4, int) i1;
43
 
44
    vector(2, long) l0 = {argc, 1};
45
    vector(2, long) l1;
46
 
47
    c1 = vchr() + c0; check (char, 16, c0, c1, vchr(), +, l);
48
 
49
    s1 = vsrt() + s0; check (short, 8, s0, s1, vsrt(), +, l);
50
    s1 = vchr() + s0; check (short, 8, s0, s1, vchr(), +, l);
51
 
52
    i1 = vint() * i0; check (int, 4, i0, i1, vint(), *, l);
53
    i1 = vsrt() * i0; check (int, 4, i0, i1, vsrt(), *, l);
54
    i1 = vchr() * i0; check (int, 4, i0, i1, vchr(), *, l);
55
 
56
    l1 = vlng() * l0; check (long, 2, l0, l1, vlng(), *, l);
57
    l1 = vint() * l0; check (long, 2, l0, l1, vint(), *, l);
58
    l1 = vsrt() * l0; check (long, 2, l0, l1, vsrt(), *, l);
59
    l1 = vchr() * l0; check (long, 2, l0, l1, vchr(), *, l);
60
 
61
    return 0;
62
}

powered by: WebSVN 2.1.0

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