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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.target/] [mips/] [mips-ps-type.c] - Blame information for rev 154

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
/* Test v2sf calculations.  The nmadd and nmsub patterns need
2
   -ffinite-math-only.  */
3
/* { dg-do compile } */
4
/* { dg-mips-options "-mips64 -O2 -mpaired-single -mhard-float -mgp64 -ffinite-math-only" } */
5
/* { dg-final { scan-assembler "cvt.ps.s" } } */
6
/* { dg-final { scan-assembler "mov.ps" } } */
7
/* { dg-final { scan-assembler "ldc1" } } */
8
/* { dg-final { scan-assembler "sdc1" } } */
9
/* { dg-final { scan-assembler "add.ps" } } */
10
/* { dg-final { scan-assembler "sub.ps" } } */
11
/* { dg-final { scan-assembler "neg.ps" } } */
12
/* { dg-final { scan-assembler "mul.ps" } } */
13
/* { dg-final { scan-assembler "madd.ps" } } */
14
/* { dg-final { scan-assembler "msub.ps" } } */
15
/* { dg-final { scan-assembler "nmadd.ps" } } */
16
/* { dg-final { scan-assembler "nmsub.ps" } } */
17
/* { dg-final { scan-assembler "mov(n|z).ps" } } */
18
 
19
typedef float v2sf __attribute__ ((vector_size(8)));
20
 
21
v2sf A = {100, 200};
22
 
23
/* Init from  floats */
24
v2sf init (float a, float b)
25
{
26
  return (v2sf) {a, b};
27
}
28
 
29
/* Move between registers */
30
v2sf move (v2sf a)
31
{
32
  return a;
33
}
34
 
35
/* Load from memory */
36
v2sf load ()
37
{
38
  return A;
39
}
40
 
41
/* Store to memory */
42
void store (v2sf a)
43
{
44
  A = a;
45
}
46
 
47
/* Add */
48
v2sf add (v2sf a, v2sf b)
49
{
50
  return a + b;
51
}
52
 
53
/* Subtract */
54
v2sf sub (v2sf a, v2sf b)
55
{
56
  return a - b;
57
}
58
 
59
/* Negate */
60
v2sf neg (v2sf a)
61
{
62
  return - a;
63
}
64
 
65
/* Multiply */
66
v2sf mul (v2sf a, v2sf b)
67
{
68
  return a * b;
69
}
70
 
71
/* Multiply and add */
72
v2sf madd (v2sf a, v2sf b, v2sf c)
73
{
74
  return a * b + c;
75
}
76
 
77
/* Multiply and subtract */
78
v2sf msub (v2sf a, v2sf b, v2sf c)
79
{
80
  return a * b - c;
81
}
82
 
83
/* Negate Multiply and add */
84
v2sf nmadd (v2sf a, v2sf b, v2sf c)
85
{
86
  return - (a * b + c);
87
}
88
 
89
/* Negate Multiply and subtract */
90
v2sf nmsub (v2sf a, v2sf b, v2sf c)
91
{
92
  return - (a * b - c);
93
}
94
 
95
/* Conditional Move */
96
v2sf cond_move1 (v2sf a, v2sf b, long i)
97
{
98
  if (i > 0)
99
    return a;
100
  else
101
    return b;
102
}
103
 
104
/* Conditional Move */
105
v2sf cond_move2 (v2sf a, v2sf b, int i)
106
{
107
  if (i > 0)
108
    return a;
109
  else
110
    return b;
111
}

powered by: WebSVN 2.1.0

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