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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.target/] [powerpc/] [vsx-vector-1.c] - Blame information for rev 322

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 322 jeremybenn
/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2
/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
3
/* { dg-require-effective-target powerpc_vsx_ok } */
4
/* { dg-options "-O2 -ftree-vectorize -mcpu=power7 -ffast-math" } */
5
/* { dg-final { scan-assembler "xvadddp" } } */
6
/* { dg-final { scan-assembler "xvsubdp" } } */
7
/* { dg-final { scan-assembler "xvmuldp" } } */
8
/* { dg-final { scan-assembler "xvdivdp" } } */
9
/* { dg-final { scan-assembler "xvmadd" } } */
10
/* { dg-final { scan-assembler "xvmsub" } } */
11
/* { dg-final { scan-assembler "xvsqrtdp" } } */
12
/* { dg-final { scan-assembler "xvcpsgndp" } } */
13
/* { dg-final { scan-assembler "xvrdpim" } } */
14
/* { dg-final { scan-assembler "xvrdpip" } } */
15
/* { dg-final { scan-assembler "xvrdpiz" } } */
16
/* { dg-final { scan-assembler "xvrdpic" } } */
17
/* { dg-final { scan-assembler "xvrdpi " } } */
18
 
19
#ifndef SIZE
20
#define SIZE 1024
21
#endif
22
 
23
double a[SIZE] __attribute__((__aligned__(32)));
24
double b[SIZE] __attribute__((__aligned__(32)));
25
double c[SIZE] __attribute__((__aligned__(32)));
26
double d[SIZE] __attribute__((__aligned__(32)));
27
double e[SIZE] __attribute__((__aligned__(32)));
28
 
29
void
30
vector_add (void)
31
{
32
  int i;
33
 
34
  for (i = 0; i < SIZE; i++)
35
    a[i] = b[i] + c[i];
36
}
37
 
38
void
39
vector_subtract (void)
40
{
41
  int i;
42
 
43
  for (i = 0; i < SIZE; i++)
44
    a[i] = b[i] - c[i];
45
}
46
 
47
void
48
vector_multiply (void)
49
{
50
  int i;
51
 
52
  for (i = 0; i < SIZE; i++)
53
    a[i] = b[i] * c[i];
54
}
55
 
56
void
57
vector_multiply_add (void)
58
{
59
  int i;
60
 
61
  for (i = 0; i < SIZE; i++)
62
    a[i] = (b[i] * c[i]) + d[i];
63
}
64
 
65
void
66
vector_multiply_subtract (void)
67
{
68
  int i;
69
 
70
  for (i = 0; i < SIZE; i++)
71
    a[i] = (b[i] * c[i]) - d[i];
72
}
73
 
74
void
75
vector_divide (void)
76
{
77
  int i;
78
 
79
  for (i = 0; i < SIZE; i++)
80
    a[i] = b[i] / c[i];
81
}
82
 
83
extern double sqrt (double);
84
extern double floor (double);
85
extern double ceil (double);
86
extern double trunc (double);
87
extern double nearbyint (double);
88
extern double rint (double);
89
extern double copysign (double, double);
90
 
91
void
92
vector_sqrt (void)
93
{
94
  int i;
95
 
96
  for (i = 0; i < SIZE; i++)
97
    a[i] = sqrt (b[i]);
98
}
99
 
100
void
101
vector_floor (void)
102
{
103
  int i;
104
 
105
  for (i = 0; i < SIZE; i++)
106
    a[i] = floor (b[i]);
107
}
108
 
109
void
110
vector_ceil (void)
111
{
112
  int i;
113
 
114
  for (i = 0; i < SIZE; i++)
115
    a[i] = ceil (b[i]);
116
}
117
 
118
void
119
vector_trunc (void)
120
{
121
  int i;
122
 
123
  for (i = 0; i < SIZE; i++)
124
    a[i] = trunc (b[i]);
125
}
126
 
127
void
128
vector_nearbyint (void)
129
{
130
  int i;
131
 
132
  for (i = 0; i < SIZE; i++)
133
    a[i] = nearbyint (b[i]);
134
}
135
 
136
void
137
vector_rint (void)
138
{
139
  int i;
140
 
141
  for (i = 0; i < SIZE; i++)
142
    a[i] = rint (b[i]);
143
}
144
 
145
void
146
vector_copysign (void)
147
{
148
  int i;
149
 
150
  for (i = 0; i < SIZE; i++)
151
    a[i] = copysign (b[i], c[i]);
152
}

powered by: WebSVN 2.1.0

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