freebsd-ports/science/cgribex/files/patch-src_minmax__val.c
Piotr Kubaj 6826232807 science/cgribex: fix build on powerpc64le with LLVM 13
./minmax_val.c:324:2: error: address of register variable requested
        dmin[j] = data[0];
        ^~~~

While here, remove the __fsel implementation and switch to __builtin_ppc_fsel that LLVM provides.
2022-03-23 16:55:52 +00:00

41 lines
1.5 KiB
C

--- src/minmax_val.c.orig 2022-03-21 21:31:13 UTC
+++ src/minmax_val.c
@@ -303,8 +303,8 @@ void pwr6_minmax_val_double_unrolled6(const double *re
size_t i, j;
size_t residual = datasize % __UNROLL_DEPTH_1;
size_t ofs = datasize - residual;
- double register dmin[__UNROLL_DEPTH_1];
- double register dmax[__UNROLL_DEPTH_1];
+ double dmin[__UNROLL_DEPTH_1];
+ double dmax[__UNROLL_DEPTH_1];
for ( j = 0; j < __UNROLL_DEPTH_1; j++)
{
@@ -316,21 +316,21 @@ void pwr6_minmax_val_double_unrolled6(const double *re
{
for (j = 0; j < __UNROLL_DEPTH_1; j++)
{
- dmin[j] = __fsel(dmin[j] - data[i+j], data[i+j], dmin[j]);
- dmax[j] = __fsel(data[i+j] - dmax[j], data[i+j], dmax[j]);
+ dmin[j] = __builtin_ppc_fsel(dmin[j] - data[i+j], data[i+j], dmin[j]);
+ dmax[j] = __builtin_ppc_fsel(data[i+j] - dmax[j], data[i+j], dmax[j]);
}
}
for (j = 0; j < residual; j++)
{
- dmin[j] = __fsel(dmin[j] - data[ofs+j], data[ofs+j], dmin[j]);
- dmax[j] = __fsel(data[ofs+j] - dmax[j], data[ofs+j], dmax[j]);
+ dmin[j] = __builtin_ppc_fsel(dmin[j] - data[ofs+j], data[ofs+j], dmin[j]);
+ dmax[j] = __builtin_ppc_fsel(data[ofs+j] - dmax[j], data[ofs+j], dmax[j]);
}
for ( j = 0; j < __UNROLL_DEPTH_1; j++)
{
- *fmin = __fsel(*fmin - dmin[j], dmin[j], *fmin);
- *fmax = __fsel(dmax[j] - *fmax, dmax[j], *fmax);
+ *fmin = __builtin_ppc_fsel(*fmin - dmin[j], dmin[j], *fmin);
+ *fmax = __builtin_ppc_fsel(dmax[j] - *fmax, dmax[j], *fmax);
}
}
#undef __UNROLL_DEPTH_1