summaryrefslogtreecommitdiff
path: root/science/cdo/files/patch-powerpc64
blob: 5d6dd67a4dc3d116705f82a9588e2b3c3a172dc0 (plain) (blame)
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	2025-07-14 15:03:05 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
@@ -752,21 +752,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