Home | History | Annotate | Download | only in s390x
      1 #ifndef DFP_UTILS_H
      2 #define DFP_UTILS_H
      3 
      4 #include <stddef.h>      /* size_t */
      5 #include <stdio.h>       /* printf */
      6 
      7 /* convinience macros to print DFP values to avoid linking libdfp to
      8    DFP testcases */
      9 
     10 #define DFP_VAL_PRINT(op, type)                                         \
     11   {                                                                     \
     12     size_t n = sizeof(type);                                            \
     13     if (n == 4)                                                         \
     14       printf("%x", *((unsigned int *) &op));                            \
     15     else if (n == 8)                                                    \
     16       printf("%lx", *((unsigned long *) &op));                          \
     17     else                                                                \
     18       printf("%lx%08lx", *((unsigned long *) &op),                      \
     19              *(((unsigned long *) &op) + 1));                           \
     20   }
     21 
     22 #define DFP_BINOP_PRINT(op1, op2, result, type, op, cc)                 \
     23   {                                                                     \
     24     DFP_VAL_PRINT(op1, type);                                           \
     25     printf(" "op" ");                                                   \
     26     DFP_VAL_PRINT(op2, type);                                           \
     27     printf(" = ");                                                      \
     28     DFP_VAL_PRINT(result, type);                                        \
     29     printf(" cc = %d\n", cc);                                           \
     30   }
     31 
     32 #endif /* DFP_UTILS_H */
     33