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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.target/] [mips/] [dpaq_sa_l_w.c] - Blame information for rev 816

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

Line No. Rev Author Line
1 321 jeremybenn
/* { dg-do compile { target { fixed_point } } } */
2
/* { dg-options "-O2 -mgp32 -mdsp" } */
3
/* { dg-final { scan-assembler-times "\tdpaq_sa.l.w\t\\\$ac" 3 } } */
4
 
5
NOMIPS16 _Sat long long _Fract
6
f1 (_Sat long _Fract x, _Sat long _Fract y, _Sat long long _Fract z)
7
{
8
  return (_Sat long long _Fract) x * y + z;
9
}
10
 
11
NOMIPS16 _Sat long long _Fract
12
f2 (_Sat long _Fract x, _Sat long _Fract y, _Sat long long _Fract z)
13
{
14
  return z + (_Sat long long _Fract) y * x;
15
}
16
 
17
NOMIPS16 _Sat long long _Fract
18
f3 (_Sat long _Fract x, _Sat long _Fract y, _Sat long long _Fract z)
19
{
20
  _Sat long long _Fract t = (_Sat long long _Fract) x * y;
21
  int temp = 5;
22
  if (temp == 5)
23
    z = t + z; /* Need to put z at the end.  GCC does not swap operands to
24
                  match the ssmadd pattern, because types are saturating.  */
25
  return z;
26
}
27
 
28
long long _Fract
29
f4 (long _Fract x, long _Fract y, long long _Fract z)
30
{
31
  return (long long _Fract) x * y + z;
32
}
33
 
34
long long _Fract
35
f5 (long _Fract x, long _Fract y, long long _Fract z)
36
{
37
  return z + (long long _Fract) y * x;
38
}
39
 
40
long long _Fract
41
f6 (long _Fract x, long _Fract y, long long _Fract z)
42
{
43
  long long _Fract t = (long long _Fract) x * y;
44
  int temp = 5;
45
  if (temp == 5)
46
    z = t + z; /* Need to put z at the end.  GCC does not swap operands to
47
                  match the ssmadd pattern, because types are saturating.  */
48
  return z;
49
}

powered by: WebSVN 2.1.0

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