summaryrefslogtreecommitdiff
path: root/science/cdo/files/patch-powerpc64
blob: f903f05da1fcf540afd061b7d42530b955ad3d80 (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	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