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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.dg/] [dfp/] [compare-rel.h] - Rev 867

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

/* Basic test of runtime relational comparisons using simple values that
   are not affected by rounding.  */
 
#include <stdlib.h>
 
static int failcnt;
 
#define PASTE2(A,B) A ## B
#define PASTE(A,B) PASTE2(A,B)
 
#ifdef DBG
#include <stdio.h>
#define FAILURE(OP,KIND) \
  { printf ("failed at line %d: %s for %s values\n", __LINE__, OP, KIND); \
    failcnt++; }
#else
#define FAILURE(OP,KIND) abort ();
#endif
 
#ifndef WIDTH
#error define WIDTH as decimal float size in bytes
#endif
 
#if WIDTH == 32
#define DTYPE _Decimal32
#define SUFFIX DF
#elif WIDTH == 64
#define DTYPE _Decimal64
#define SUFFIX DD
#elif WIDTH == 128
#define DTYPE _Decimal128
#define SUFFIX DL
#elif WIDTH == 0
/* This is for testing the test using a type known to work.  */
#define DTYPE double
#define SUFFIX
#else
#error invalid width for decimal float type
#endif
 
DTYPE m_two = PASTE(-2.0, SUFFIX);
DTYPE m_one = PASTE(-1.0, SUFFIX);
DTYPE zero  = PASTE(0.0, SUFFIX);
DTYPE one   = PASTE(1.0, SUFFIX);
DTYPE two   = PASTE(2.0, SUFFIX);
 
void
test_compares (void)
{
  DTYPE x = one;
  DTYPE y = zero;
  DTYPE z = m_one;
 
  /* Less than or equal to: comparisons against equal values.  */
 
  if (! (x <= one))   FAILURE ("<=", "equal")
  if (! (y <= zero))  FAILURE ("<=", "equal")
  if (! (z <= m_one)) FAILURE ("<=", "equal")
 
  /* Less than or equal to: comparisons against lesser values.  */
 
  if (x <= m_one)     FAILURE ("<=", "lesser")
  if (x <= zero)      FAILURE ("<=", "lesser")
  if (y <= m_one)     FAILURE ("<=", "lesser")
  if (z <= m_two)     FAILURE ("<=", "lesser")
 
  /* Less than or equal to: comparisons against greater values.  */
 
  if (! (x <= two))   FAILURE ("<=", "greater")
  if (! (y <= one))   FAILURE ("<=", "greater")
  if (! (z <= zero))  FAILURE ("<=", "greater")
  if (! (z <= one))   FAILURE ("<=", "greater")
 
  /* Less than: comparisons against equal values.  */
 
  if (x < one)        FAILURE ("<", "equal")
  if (y < zero)       FAILURE ("<", "equal")
  if (z < m_one)      FAILURE ("<", "equal")
 
  /* Less than: comparisons against lesser values.  */
 
  if (x < m_one)      FAILURE ("<", "lesser")
  if (x < zero)       FAILURE ("<", "lesser")
  if (y < m_one)      FAILURE ("<", "lesser")
  if (z < m_two)      FAILURE ("<", "lesser")
 
  /* Less than: comparisons against greater values.  */
 
  if (! (x < two))    FAILURE ("<", "greater")
  if (! (y < one))    FAILURE ("<", "greater")
  if (! (z < zero))   FAILURE ("<", "greater")
  if (! (z < one))    FAILURE ("<", "greater")
 
  /* Greater than or equal to: comparisons against equal values.  */
 
  if (! (x >= one))   FAILURE (">=", "equal")
  if (! (y >= zero))  FAILURE (">=", "equal")
  if (! (z >= m_one)) FAILURE (">=", "equal")
 
  /* Greater than or equal to: comparisons against lesser values.  */
 
  if (! (x >= m_one)) FAILURE (">=", "lesser")
  if (! (x >= zero))  FAILURE (">=", "lesser")
  if (! (y >= m_one)) FAILURE (">=", "lesser")
  if (! (z >= m_two)) FAILURE (">=", "lesser")
 
  /* Greater than or equal to: comparisons against greater values.  */
 
  if (x >= two)       FAILURE (">=", "greater")
  if (y >= one)       FAILURE (">=", "greater")
  if (z >= zero)      FAILURE (">=", "greater")
  if (z >= one)       FAILURE (">=", "greater")
 
  /* Greater than: comparisons against equal values.  */
 
  if (x > one)        FAILURE (">", "equal")
  if (y > zero)       FAILURE (">", "equal")
  if (z > m_one)      FAILURE (">", "equal")
 
  /* Greater than: comparisons against lesser values.  */
 
  if (! (x > m_one))  FAILURE (">", "lesser")
  if (! (x > zero))   FAILURE (">", "lesser")
  if (! (y > m_one))  FAILURE (">", "lesser")
  if (! (z > m_two))  FAILURE (">", "lesser")
 
  /* Greater than: comparisons against greater values.  */
 
  if (x > two)        FAILURE (">", "greater")
  if (y > one)        FAILURE (">", "greater")
  if (z > zero)       FAILURE (">", "greater")
  if (z > one)        FAILURE (">", "greater")
 
  if (failcnt)
    abort ();
}
 

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

powered by: WebSVN 2.1.0

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