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