1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
--- libcdi/src/cgribexlib.c.orig 2024-02-02 10:51:13 UTC
+++ libcdi/src/cgribexlib.c
@@ -10,7 +10,7 @@
#pragma GCC diagnostic warning "-Wstrict-overflow"
#endif
-#ifdef _ARCH_PWR6
+#if defined(_ARCH_PWR6) && defined(__GLIBC__)
#pragma options nostrict
#include <ppu_intrinsics.h>
#endif
@@ -766,21 +766,21 @@ pwr6_minmax_val_double_unrolled6(const double *restric
{
for (size_t 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 (size_t 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 (size_t 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
|