summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/ia64/pr43603.c
blob: ad3a5b114bc965c5e5320982b7b9c63fad8837ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* { dg-do compile } */
/* { dg-options "-O3" } */

int 
foo( long * np, int * dp, int qn)
{
  int i;
  int n0;
  int d0;
  int a;
  int b;
  int c;
  int d;

  a = 1;
  b = 0;
  c = 1;
  d = 1;

  d0 = dp[0];

  for (i = qn; i >= 0; i--) {
    if (bar((c == 0)) && (np[1] == d0)) {
      car(np - 3, dp, 3);
    } else { 
      __asm__ ("xma.hu %0 = %2, %3, f0\n\txma.l %1 = %2, %3, f0" : "=&f" ((a)), 
"=f" (b) : "f" ((c)), "f" ((d))); 
      n0 = np[0]; 
      if (n0 < d0) 
        c = 1; 
      else 
        c = 0; 

    }
    *--np = a;
  }

  return 0;
}