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.c-torture/] [execute/] [simd-5.c] - Blame information for rev 298

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

Line No. Rev Author Line
1 297 jeremybenn
/* Test saving and restoring of SIMD registers.  */
2
 
3
typedef short Q __attribute__((vector_size(8)));
4
 
5
Q q1 = {1, 2}, q2 = {3, 4}, q3 = {5, 6}, q4 = {7, 8};
6
 
7
Q w1, w2, w3, w4;
8
Q z1, z2, z3, z4;
9
 
10
volatile int dummy;
11
 
12
void  __attribute__((__noinline__))
13
func0 (void)
14
{
15
  dummy = 1;
16
}
17
 
18
void __attribute__((__noinline__))
19
func1 (void)
20
{
21
  Q a, b;
22
  a = q1 * q2;
23
  b = q3 * q4;
24
  w1 = a;
25
  w2 = b;
26
  func0 ();
27
  w3 = a;
28
  w4 = b;
29
}
30
 
31
void __attribute__((__noinline__))
32
func2 (void)
33
{
34
  Q a, b;
35
  a = q1 + q2;
36
  b = q3 - q4;
37
  z1 = a;
38
  z2 = b;
39
  func1 ();
40
  z3 = a;
41
  z4 = b;
42
}
43
 
44
int
45
main (void)
46
{
47
  func2 ();
48
 
49
  if (memcmp (&w1, &w3, sizeof (Q)) != 0)
50
    abort ();
51
  if (memcmp (&w2, &w4, sizeof (Q)) != 0)
52
    abort ();
53
  if (memcmp (&z1, &z3, sizeof (Q)) != 0)
54
    abort ();
55
  if (memcmp (&z2, &z4, sizeof (Q)) != 0)
56
    abort ();
57
 
58
  return 0;
59
}

powered by: WebSVN 2.1.0

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