]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
PowerPC: Remove 64 bits instructions in PPC32 code
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>
Thu, 22 May 2014 19:48:38 +0000 (14:48 -0500)
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>
Wed, 4 Feb 2015 20:50:53 +0000 (15:50 -0500)
This patch replaces the insrdi by insrwi in powerpc32 assembly.

It is a backport of d298c41635ce7f2dc7c3eccc842fe3aa754c0c8e.

Conflicts:
ChangeLog

ChangeLog
sysdeps/powerpc/powerpc32/power4/memset.S
sysdeps/powerpc/powerpc32/power6/memset.S
sysdeps/powerpc/powerpc32/power7/memchr.S
sysdeps/powerpc/powerpc32/power7/memrchr.S
sysdeps/powerpc/powerpc32/power7/memset.S
sysdeps/powerpc/powerpc32/power7/rawmemchr.S
sysdeps/powerpc/powerpc32/power7/strchr.S
sysdeps/powerpc/powerpc32/power7/strchrnul.S

index 26910d9153d89707b56bcf07e1c8e2e3c4473a74..ad9df0f243b687db6cc8d4531a6001565aa22801 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2014-05-26  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
+
+       * sysdeps/powerpc/powerpc32/power4/memset.S (memset): Replace insrdi
+       by insrwi.
+       * sysdeps/powerpc/powerpc32/power6/memset.S (memset): Likewise.
+       * sysdeps/powerpc/powerpc32/power7/memset.S (memset): Likewise.
+       * sysdeps/powerpc/powerpc32/power7/memchr.S (memchr): Likewise.
+       * sysdeps/powerpc/powerpc32/power7/memrchr.S (memrchr): Likewise.
+       * sysdeps/powerpc/powerpc32/power7/rawmemchr.S (rawmemchr): Likewise.
+       * sysdeps/powerpc/powerpc32/power7/strchr.S (strchr): Likewise.
+       * sysdeps/powerpc/powerpc32/power7/strchrnul.S (strchrnul): Likewise.
+
 2014-11-19  Carlos O'Donell  <carlos@redhat.com>
            Florian Weimer  <fweimer@redhat.com>
            Joseph Myers  <joseph@codesourcery.com>
index 4fd9d8cb4a602e923256e2e88764f8b1572b1e96..9129c12e6f3c07b516d75f6093870313c20639fe 100644 (file)
@@ -50,7 +50,7 @@ L(_memset):
 
 /* Align to word boundary.  */
        cmplwi  cr5, rLEN, 31
-       insrdi  rCHR, rCHR, 8, 48     /* Replicate byte to halfword.  */
+       insrwi  rCHR, rCHR, 8, 16     /* Replicate byte to halfword.  */
        beq+    L(aligned)
        mtcrf   0x01, rMEMP0
        subfic  rALIGN, rALIGN, 4
@@ -65,7 +65,7 @@ L(g0):
 /* Handle the case of size < 31.  */
 L(aligned):
        mtcrf   0x01, rLEN
-       insrdi  rCHR, rCHR, 16, 32    /* Replicate halfword to word.  */
+       insrwi  rCHR, rCHR, 16, 0    /* Replicate halfword to word.  */
        ble     cr5, L(medium)
 /* Align to 32-byte boundary.  */
        andi.   rALIGN, rMEMP, 0x1C
index 508d5607964519ae32b6895d5001ed05dd06a737..78ce1a575e97d5e02c9438d0f051b765c8b29f1d 100644 (file)
@@ -48,7 +48,7 @@ L(_memset):
        ble-    cr1, L(small)
 /* Align to word boundary.  */
        cmplwi  cr5, rLEN, 31
-       insrdi  rCHR, rCHR, 8, 48       /* Replicate byte to halfword.  */
+       insrwi  rCHR, rCHR, 8, 16       /* Replicate byte to halfword.  */
        beq+    L(aligned)
        mtcrf   0x01, rMEMP0
        subfic  rALIGN, rALIGN, 4
@@ -64,7 +64,7 @@ L(g0):
 /* Handle the case of size < 31.  */
 L(aligned):
        mtcrf   0x01, rLEN
-       insrdi  rCHR, rCHR, 16, 32      /* Replicate halfword to word.  */
+       insrwi  rCHR, rCHR, 16, 0       /* Replicate halfword to word.  */
        ble     cr5, L(medium)
 /* Align to 32-byte boundary.  */
        andi.   rALIGN, rMEMP, 0x1C
index 85754f3f172349dbc5acf37a4d88f32aae63afc2..bd15db8f0cb6dc727c3b1fa4d0d18fff6582bb38 100644 (file)
@@ -25,9 +25,9 @@ ENTRY (__memchr)
        CALL_MCOUNT
        dcbt    0,r3
        clrrwi  r8,r3,2
-       insrdi  r4,r4,8,48
+       insrwi  r4,r4,8,16    /* Replicate byte to word.  */
        add     r7,r3,r5      /* Calculate the last acceptable address.  */
-       insrdi  r4,r4,16,32
+       insrwi  r4,r4,16,0
        cmplwi  r5,16
        li      r9, -1
        rlwinm  r6,r3,3,27,28 /* Calculate padding.  */
index 9601aa7997f52950e64fea2a70ee725386800bda..3dd1c874013ead494f8cca72b83169b4466eb0d7 100644 (file)
@@ -32,8 +32,8 @@ ENTRY (__memrchr)
        dcbt    r9,r6,16      /* Stream hint, decreasing addresses.  */
 
        /* Replicate BYTE to word.  */
-       rldimi  r4,r4,8,48
-       rldimi  r4,r4,16,32
+       insrwi  r4,r4,8,16
+       insrwi  r4,r4,16,0
        li      r6,-4
        li      r9,-1
        rlwinm  r0,r0,3,27,28 /* Calculate padding.  */
index aadda2558f1694c3162440eaee2f74ab6c3327b0..0e86d833e33df43c6082f586011c7b8c0a06aef6 100644 (file)
@@ -35,8 +35,8 @@ L(_memset):
        cfi_offset(31,-8)
 
        /* Replicate byte to word.  */
-       insrdi  4,4,8,48
-       insrdi  4,4,16,32
+       insrwi  4,4,8,16
+       insrwi  4,4,16,0
 
        ble     cr6,L(small)    /* If length <= 8, use short copy code.  */
 
index c2d8c4b7be66f0d2aba63f61689cd61fb311be19..8a4b29a480cf0d194b4839f40711cdffab7ae3a4 100644 (file)
@@ -27,8 +27,8 @@ ENTRY (__rawmemchr)
        clrrwi  r8,r3,2       /* Align the address to word boundary.  */
 
        /* Replicate byte to word.  */
-       rldimi  r4,r4,8,48
-       rldimi  r4,r4,16,32
+       insrwi  r4,r4,8,16
+       insrwi  r4,r4,16,0
 
        /* Now r4 has a word of c bytes.  */
 
index b6626596714d625020f845abee2e394879056e0c..f24b0781831ff12af82d676bc0107cea9caa41ce 100644 (file)
@@ -35,8 +35,8 @@ ENTRY (strchr)
        beq     cr7,L(null_match)
 
        /* Replicate byte to word.  */
-       insrdi  r4,r4,8,48
-       insrdi  r4,r4,16,32
+       insrwi  r4,r4,8,16
+       insrwi  r4,r4,16,0
 
        /* Now r4 has a word of c bytes and r0 has
           a word of null bytes.  */
index f5d24d434058b159aba43916b9aa6c5fd45b83ee..8e8d0b619d70ecfcdf3c0ba921f3dad600d87433 100644 (file)
@@ -27,8 +27,8 @@ ENTRY (__strchrnul)
        clrrwi  r8,r3,2       /* Align the address to word boundary.  */
 
        /* Replicate byte to word.  */
-       insrdi  r4,r4,8,48
-       insrdi  r4,r4,16,32
+       insrwi  r4,r4,8,16
+       insrwi  r4,r4,16,0
 
        rlwinm  r6,r3,3,27,28 /* Calculate padding.  */
        lwz     r12,0(r8)     /* Load word from memory.  */