./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.
41 lines
1.5 KiB
C
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
|