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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.target/] [i386/] [pr30315.c] - Diff between revs 318 and 338

Only display areas with differences | Details | Blame | View Log

Rev 318 Rev 338
/* { dg-do compile } */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-times "cmp" 4 } } */
/* { dg-final { scan-assembler-times "cmp" 4 } } */
 
 
extern void abort (void);
extern void abort (void);
int c;
int c;
 
 
#define PLUSCC1(T, t, C)        \
#define PLUSCC1(T, t, C)        \
T pluscc##t##C (T a, T b)       \
T pluscc##t##C (T a, T b)       \
{       \
{       \
  T sum = a + b;        \
  T sum = a + b;        \
  if (sum < C)          \
  if (sum < C)          \
    abort ();           \
    abort ();           \
  return sum;           \
  return sum;           \
}
}
#define PLUSCC(T, t) PLUSCC1(T, t, a) PLUSCC1(T, t, b)
#define PLUSCC(T, t) PLUSCC1(T, t, a) PLUSCC1(T, t, b)
 
 
#define INCCC1(T, t, C) \
#define INCCC1(T, t, C) \
T inccc##t##C (T a, T b)        \
T inccc##t##C (T a, T b)        \
{       \
{       \
  T sum = a + b;        \
  T sum = a + b;        \
  if (sum < C)          \
  if (sum < C)          \
    c ++;               \
    c ++;               \
  return sum;           \
  return sum;           \
}
}
#define INCCC(T, t) INCCC1(T, t, a) INCCC1(T, t, b)
#define INCCC(T, t) INCCC1(T, t, a) INCCC1(T, t, b)
 
 
#define PLUSCCONLY1(T, t, C)    \
#define PLUSCCONLY1(T, t, C)    \
void pluscconly##t##C (T a, T b)        \
void pluscconly##t##C (T a, T b)        \
{       \
{       \
  T sum = a + b;        \
  T sum = a + b;        \
  if (sum < C)          \
  if (sum < C)          \
    abort ();           \
    abort ();           \
}
}
#define PLUSCCONLY(T, t) PLUSCCONLY1(T, t, a) PLUSCCONLY1(T, t, b)
#define PLUSCCONLY(T, t) PLUSCCONLY1(T, t, a) PLUSCCONLY1(T, t, b)
 
 
#define MINUSCC(T, t)   \
#define MINUSCC(T, t)   \
T minuscc##t (T a, T b) \
T minuscc##t (T a, T b) \
{       \
{       \
  T difference = a - b; \
  T difference = a - b; \
  if (difference > a)   \
  if (difference > a)   \
    abort ();           \
    abort ();           \
  return difference;    \
  return difference;    \
}
}
 
 
#define DECCC(T, t)     \
#define DECCC(T, t)     \
T deccc##t (T a, T b)   \
T deccc##t (T a, T b)   \
{       \
{       \
  T difference = a - b; \
  T difference = a - b; \
  if (difference > a)   \
  if (difference > a)   \
    c --;               \
    c --;               \
  return difference;    \
  return difference;    \
}
}
 
 
#define MINUSCCONLY(T, t)       \
#define MINUSCCONLY(T, t)       \
void minuscconly##t (T a, T b)  \
void minuscconly##t (T a, T b)  \
{       \
{       \
  T difference = a - b; \
  T difference = a - b; \
  if (difference > a)   \
  if (difference > a)   \
    abort ();           \
    abort ();           \
}
}
 
 
#define TEST(T, t)      \
#define TEST(T, t)      \
  PLUSCC(T, t)          \
  PLUSCC(T, t)          \
  PLUSCCONLY(T, t)      \
  PLUSCCONLY(T, t)      \
  INCCC(T, t)           \
  INCCC(T, t)           \
  MINUSCC(T, t)         \
  MINUSCC(T, t)         \
  MINUSCCONLY(T, t)     \
  MINUSCCONLY(T, t)     \
  DECCC(T, t)
  DECCC(T, t)
 
 
TEST (unsigned long,  l)
TEST (unsigned long,  l)
TEST (unsigned int,   i)
TEST (unsigned int,   i)
TEST (unsigned short, s)
TEST (unsigned short, s)
TEST (unsigned char,  c)
TEST (unsigned char,  c)
 
 
#define PLUSCCZEXT(C)   \
#define PLUSCCZEXT(C)   \
unsigned long pluscczext##C (unsigned int a, unsigned int b)    \
unsigned long pluscczext##C (unsigned int a, unsigned int b)    \
{       \
{       \
  unsigned int sum = a + b;     \
  unsigned int sum = a + b;     \
  if (sum < C)          \
  if (sum < C)          \
    abort ();           \
    abort ();           \
  return sum;           \
  return sum;           \
}
}
 
 
PLUSCCZEXT(a)
PLUSCCZEXT(a)
PLUSCCZEXT(b)
PLUSCCZEXT(b)
 
 
#define MINUSCCZEXT     \
#define MINUSCCZEXT     \
unsigned long minuscczext (unsigned int a, unsigned int b)      \
unsigned long minuscczext (unsigned int a, unsigned int b)      \
{       \
{       \
  unsigned int difference = a - b;      \
  unsigned int difference = a - b;      \
  if (difference > a)           \
  if (difference > a)           \
    abort ();                   \
    abort ();                   \
  return difference;            \
  return difference;            \
}
}
 
 
MINUSCCZEXT
MINUSCCZEXT
 
 

powered by: WebSVN 2.1.0

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