** FPp+1= rightmost 64 bits stored at DS(RA)
** FPp must be an even float register
*/
-int test_double_pair_instrs()
+void test_double_pair_instrs()
{
typedef struct {
double hi;
/* the following decls are for alignment */
int i;
- int j;
- int k;
- int l;
-#ifdef __powerpc64__
- int m;
- int n;
- int o;
-#endif
dbl_pair_t dbl_pair[3]; /* must be quad word aligned */
unsigned long base;
unsigned long offset;
__asm__ volatile ("stfdpx 10, 20, 21");
printf("stfdpx (%f, %f) => F_hi=%f, F_lo=%f\n",
FRT1, FRT2, dbl_pair[2].hi, dbl_pair[2].lo);
-#ifdef __powerpc64__
- return i + j + k + l + m + n + o;
-#else
- return i + j + k + l;
-#endif
}
}
/* b0 may be non-zero in lwarx/ldarx Power6 instrs */
-int test_reservation()
+void test_reservation()
{
int RT;
- int i, j;
unsigned long base;
unsigned long offset;
long arr[4] = { 0xdeadbeef, 0xbad0beef, 0xbeefdead, 0xbeef0bad };
__asm__ volatile ("ldarx %0, 20, 21, 1":"=r" (RT));
printf("ldarx => %x\n", RT);
#endif
- return i + j;
+
}
int main(void)
** FPp+1= rightmost 64 bits stored at DS(RA)
** FPp must be an even float register
*/
-int test_double_pair_instrs()
+void test_double_pair_instrs()
{
typedef struct {
double hi;
/* the following decls are for alignment */
int i;
- int j;
- int k;
- int l;
-#ifdef __powerpc64__
- int m;
- int n;
- int o;
-#endif
dbl_pair_t dbl_pair[3]; /* must be quad word aligned */
unsigned long base;
unsigned long offset;
__asm__ volatile ("stfdpx 10, 20, 21");
printf("stfdpx (%f, %f) => F_hi=%f, F_lo=%f\n",
FRT1, FRT2, dbl_pair[2].hi, dbl_pair[2].lo);
-#ifdef __powerpc64__
- return i + j + k + l + m + n + o;
-#else
- return i + j + k + l;
-#endif
}
}
/* b0 may be non-zero in lwarx/ldarx Power6 instrs */
-int test_reservation()
+void test_reservation()
{
int RT;
- int i, j;
unsigned long base;
unsigned long offset;
long arr[4] = { 0xdeadbeef, 0xbad0beef, 0xbeefdead, 0xbeef0bad };
__asm__ volatile ("ldarx %0, 20, 21, 1":"=r" (RT));
printf("ldarx => %x\n", RT);
#endif
- return i + j;
+
}
int main(void)
{
volatile HWord_t res;
volatile uint32_t flags, xer, xer_orig;
- int i, j, is_div, zap_hi32;
+ int i, j, is_div;
+#ifdef __powerpc64__
+ int zap_hi32;
+#endif
// catches div, divwu, divo, divwu, divwuo, and . variants
is_div = strstr(name, "divw") != NULL;
+#ifdef __powerpc64__
zap_hi32 = strstr(name, "mulhw") != NULL;
+#endif
xer_orig = 0x00000000;
redo:
double friz[] = { inf, 1.0, 1.0, 0, neg0, -1.0, -1.0, -inf, nan };
double frip[] = { inf, 2.0, 2.0, 0, neg0, -1.0, -1.0, -inf, nan };
double frim[] = { inf, 1.0, 1.0, 0, neg0, -2.0, -2.0, -inf, nan };
- int fprf[] = { POS_INF, POS_NORMAL, POS_NORMAL, POS_ZERO, NEG_ZERO,
- NEG_NORMAL, NEG_NORMAL, NEG_INF, NAN
- };
double set2[] = { 0.9, 0.1, -0.1, -0.9, 1e-40, -1e-40 };
double frin2[] = { 1.0, 0.0, -0.0, -1.0, 0.0, -0.0 };
- int frin2rf[] =
- { POS_NORMAL, POS_ZERO, NEG_ZERO, NEG_NORMAL, POS_ZERO,
- NEG_ZERO };
double friz2[] = { 0.0, 0.0, -0.0, -0.0, 0.0, -0.0 };
- int friz2rf[] =
- { POS_ZERO, POS_ZERO, NEG_ZERO, NEG_ZERO, POS_ZERO, NEG_ZERO };
double frip2[] = { 1.0, 1.0, -0.0, -0.0, 1.0, -0.0 };
- int frip2rf[] =
- { POS_NORMAL, POS_NORMAL, NEG_ZERO, NEG_ZERO, POS_NORMAL,
- NEG_ZERO };
double frim2[] = { 0.0, 0.0, -1.0, -1.0, 0.0, -1.0 };
- int frim2rf[] =
- { POS_ZERO, POS_ZERO, NEG_NORMAL, NEG_NORMAL, POS_ZERO,
- NEG_NORMAL };
double ret;
int i;
double set1[] = { inf, 0.9, 0.1, 0, neg0, -0.1, -0.9, -inf, nan };
double frsp1[] =
{ inf, 0.9f, 0.1f, 0, neg0, -0.1f, -0.9f, -inf, nan };
- int fprf1[] =
- { POS_INF, POS_NORMAL, POS_NORMAL, POS_ZERO, NEG_ZERO,
- NEG_NORMAL,
- NEG_NORMAL, NEG_INF, NAN
- };
double set2[] =
{ 1.2e-38, 1.1e-38, 1e-40, 8e-44, 9e-44, 8e-46, 7e-46 };
double frsp2[] =
{ 1.2e-38f, 1.1e-38f, 1e-40f, 8e-44f, 9e-44f, 8e-46f, 0.0 };
- int fprf2[] = { POS_NORMAL, POS_DENORMAL, POS_DENORMAL, POS_DENORMAL,
- POS_DENORMAL, POS_DENORMAL, POS_ZERO
- };
double set3[] =
{ -1.2e-38, -1.1e-38, -1e-40, -8e-44, -9e-44, -8e-46, -7e-46 };
double frsp3[] =
{ -1.2e-38f, -1.1e-38f, -1e-40f, -8e-44f, -9e-44f, -8e-46f,
-0.0 };
- int fprf3[] = { NEG_NORMAL, NEG_DENORMAL, NEG_DENORMAL, NEG_DENORMAL,
- NEG_DENORMAL, NEG_DENORMAL, NEG_ZERO
- };
double ret;
int i;
DO_TEST(frsp, set1, frsp1, fprf1);
int status = 0;
flt_overlay R, E;
char *result;
- char *eq_ne;
set_rounding_mode(mode);
(R.layout.exp != E.layout.exp) ||
(R.layout.frac != E.layout.frac)) {
result = "FAILED";
- eq_ne = "!=";
status = 1;
} else {
result = "PASSED";
- eq_ne = "==";
status = 0;
}
printf("%s:%s:(double)(%-20a) = %20a",
static void test_dcffix_dcffixq(int has_vsx)
{
test_func_t func;
- unsigned long long u0, u0x;
+ unsigned long long u0;
double res, d0, *d0p;
- double d0x, *d0xp;
int k = 0, round_mode;
- u0x = 0;
d0p = &d0;
- d0xp = &d0x;
+
while ((func = dfp_dcffix_dcffixq_tests[k].test_func)) {
int i;
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
+#include <string.h>
#if defined(HAS_DFP)
unsigned long long u0, u0x, u1, u1x;
double res, d0, d1, *d0p, *d1p;
double d0x, d1x, *d0xp, *d1xp;
- int k = 0, BF;
+ int k = 0;
u0x = u1x = 0;
d0p = &d0;
d0xp = &d0x;
while ((func = dfp_qua_tests[k].test_func)) {
int i, RMC;
dfp_test_t test_def = dfp_qua_tests[k];
- BF = 0;
for (i = 0; i < test_def.num_tests; i++) {
if (test_def.precision == LONG_TEST) {
dfp_one_arg_test_t test_def = dfp_rrnd_tests[k];
for (i = 0; i < NUM_DFP_VALS; i++) {
- int R, RMC;
+ int RMC;
if (test_def.precision == LONG_TEST) {
u0 = dfp64_vals[i];
int k = 0;
while ((func = dfp_ClassAndGroupTest_tests[k].test_func)) {
- int i, j;
+ int i;
dfp_one_arg_test_t test_def = dfp_ClassAndGroupTest_tests[k];
for (i = 0; i < NUM_DFP_VALS; i++) {
static dfp_val_t _test_ddedpd(unsigned int SP, dfp_val_t valB)
{
- _Decimal64 ret;
+ _Decimal64 ret = 0;
dfp_val_t result;
_Decimal64 f16 = valB.dec_val;
switch (SP) {
static dfp_val_t _test_ddedpdq(unsigned int SP, dfp_val_t valB)
{
- _Decimal128 ret;
+ _Decimal128 ret = 0;
dfp_val_t result;
_Decimal128 f16 = valB.dec_val128;
switch (SP) {
static dfp_val_t _test_denbcd(unsigned int S, dfp_val_t valB)
{
- _Decimal64 ret;
+ _Decimal64 ret = 0;
dfp_val_t result;
_Decimal64 f16 = valB.dec_val;
switch (S) {
static dfp_val_t _test_denbcdq(unsigned int S, dfp_val_t valB)
{
- _Decimal128 ret;
+ _Decimal128 ret = 0;
dfp_val_t result;
_Decimal128 f16 = valB.dec_val128;
switch (S) {
int k = 0;
while ((func = dfp_test_dfp_ddedpd_tests[k].test_func)) {
- int i, j;
+ int i;
dfp_one_arg_bcd_test_t test_def = dfp_test_dfp_ddedpd_tests[k];
for (i = 0; i < NUM_DFP_VALS; i++) {
int k = 0;
while ((func = dfp_test_dfp_denbcd_tests[k].test_func)) {
- int i, j;
+ int i;
dfp_one_arg_bcd_test_t test_def = dfp_test_dfp_denbcd_tests[k];
if (test_def.precision == LONG_TEST)
num_test_vals = sizeof(bcd64_vals)/sizeof(unsigned long long);
{
test_func_t func;
unsigned int *src, *dst;
- int i, j, m, equality;
- i = j = 0;
+ int m, equality;
func = storeTest.test_func;
r14 = (HWord_t) storeTest.base_addr;
{ 4, 4 },
{ 4, -5 },
{ 3, 8 },
- { 0x8000000000000000, 0xa },
+ { 0x8000000000000000ULL, 0xa },
{ 0x50c, -1 },
{ 0x50c, -4096 },
{ 0x1234fedc, 0x8000a873 },
- { 0xabcd87651234fedc, 0xa123b893 },
- { 0x123456789abdc, 0 },
+ { 0xabcd87651234fedcULL, 0xa123b893 },
+ { 0x123456789abdcULL, 0 },
{ 0, 2 },
{ 0x77, 0xa3499 }
};
{ 4, 4 },
{ 4, -5 },
{ 3, 8 },
- { 0x8000000000000000, 0xa },
+ { 0x8000000000000000ULL, 0xa },
{ 0x50c, -1 },
{ 0x50c, -4096 },
{ 0x1234fedc, 0x8000a873 },
- { 0xabcd87651234fedc, 0xa123b893 },
- { 0x123456789abdc, 0 },
+ { 0xabcd87651234fedcULL, 0xa123b893 },
+ { 0x123456789abdcULL, 0 },
{ 0, 2 },
{ 0x77, 0xa3499 }
};
int status = 0;
flt_overlay R, E;
char *result;
- char *eq_ne;
set_rounding_mode(mode);
(R.layout.exp != E.layout.exp) ||
(R.layout.frac != E.layout.frac)) {
result = "FAILED";
- eq_ne = "!=";
status = 1;
} else {
result = "PASSED";
- eq_ne = "==";
status = 0;
}
printf("%s:%s:(double)(%-20a) = %20a",