about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-02-17 10:44:08 -0600
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-02-27 12:58:33 -0600
commitfe13a20c37578f08ce393ccaeb45caeb48815ca5 (patch)
tree62a09dac1baf2a1caf2e8b346733645cc596340f /sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
parent1ad8950a3ea4056ed343d681b5146f4b4aa27e10 (diff)
downloadglibc-fe13a20c37578f08ce393ccaeb45caeb48815ca5.tar.gz
glibc-fe13a20c37578f08ce393ccaeb45caeb48815ca5.tar.xz
glibc-fe13a20c37578f08ce393ccaeb45caeb48815ca5.zip
PowerPC: llround/llroundf POWER8 optimization
This patch add a optimized llround/llroundf implementation for POWER8
using the new Move From VSR Doubleword instruction to gains some
cycles from FP to GRP register move.
Diffstat (limited to 'sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c')
-rw-r--r--sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
index a4d1bf3a2a..7dba17e96e 100644
--- a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c
@@ -27,12 +27,15 @@
 extern __typeof (__llround) __llround_ppc64 attribute_hidden;
 extern __typeof (__llround) __llround_power5plus attribute_hidden;
 extern __typeof (__llround) __llround_power6x attribute_hidden;
+extern __typeof (__llround) __llround_power8 attribute_hidden;
 
 libc_ifunc (__llround,
-	    (hwcap & PPC_FEATURE_POWER6_EXT)
-	    ? __llround_power6x :
-	      (hwcap & PPC_FEATURE_POWER5_PLUS)
-	      ? __llround_power5plus
+	    (hwcap2 & PPC_FEATURE2_ARCH_2_07)
+	    ? __llround_power8 :
+	      (hwcap & PPC_FEATURE_POWER6_EXT)
+	      ? __llround_power6x :
+		(hwcap & PPC_FEATURE_POWER5_PLUS)
+		? __llround_power5plus
             : __llround_ppc64);
 
 weak_alias (__llround, llround)