From fc449cfc7cf6905f319c99ebfbbb699cd5f4a301 Mon Sep 17 00:00:00 2001 From: Haavard Skinnemoen Date: Mon, 7 Aug 2006 10:18:10 +0200 Subject: [PATCH] Kill insert/extract instructions from string operations insert.{b,h}/extract.{b,h} are leftovers from an older instruction set specification. They have been replaced with bfins, bfextu and bfexts. --- libc/string/avr32/memchr.S | 10 +++++----- libc/string/avr32/memset.S | 4 ++-- libc/string/avr32/strcat.S | 15 +++++++-------- libc/string/avr32/strcmp.S | 16 ++++++++-------- libc/string/avr32/strcpy.S | 9 ++++----- libc/string/avr32/strlen.S | 6 +++--- libc/string/avr32/strncpy.S | 9 ++++----- 7 files changed, 33 insertions(+), 36 deletions(-) diff --git a/libc/string/avr32/memchr.S b/libc/string/avr32/memchr.S index 1f6f621..096d185 100644 --- a/libc/string/avr32/memchr.S +++ b/libc/string/avr32/memchr.S @@ -10,8 +10,8 @@ #define len r10 .global memchr .type memchr, @function memchr: - insert.b chr:l, chr - insert.h chr:t, chr + or chr, chr, chr << 8 + or chr, chr, chr << 16 mov r9, str andl r9, 3, COH @@ -25,15 +25,15 @@ memchr: brne 1b sub str, 4 - extract.b r9, r8:t + bfextu r9, r8, 24, 8 cp.b r9, r11 reteq str sub str, -1 - extract.b r9, r8:u + bfextu r9, r8, 16, 8 cp.b r9, r11 reteq str sub str, -1 - extract.b r9, r8:l + bfextu r9, r8, 8, 8 cp.b r9, r11 reteq str sub str, -1 diff --git a/libc/string/avr32/memset.S b/libc/string/avr32/memset.S index b9cd794..9ccfb06 100644 --- a/libc/string/avr32/memset.S +++ b/libc/string/avr32/memset.S @@ -26,9 +26,9 @@ memset: .Llarge_memset: mov r8, r11 mov r11, 3 - insert.b r8:l, r8 + or r8, r8, r8 << 8 + or r8, r8, r8 << 16 tst s, r11 - insert.h r8:t, r8 breq 2f 1: st.b s++, r8 diff --git a/libc/string/avr32/strcat.S b/libc/string/avr32/strcat.S index 152203d..c12812a 100644 --- a/libc/string/avr32/strcat.S +++ b/libc/string/avr32/strcat.S @@ -36,15 +36,15 @@ strcat: sub s1, 4 - extract.b r10, r8:t + bfextu r10, r8, 24, 8 cp.w r10, 0 breq 1f sub s1, -1 - extract.b r10, r8:u + bfextu r10, r8, 16, 8 cp.w r10, 0 breq 2f sub s1, -1 - extract.b r10, r8:l + bfextu r10, r8, 8, 8 cp.w r10, 0 breq 3f sub s1, -1 @@ -78,19 +78,18 @@ strcat: brne 1b /* Copy the remaining bytes */ - extract.b r10, r8:t + bfextu r10, r8, 24, 8 st.b s1++, r10 cp.w r10, 0 reteq r12 - extract.b r10, r8:u + bfextu r10, r8, 16, 8 st.b s1++, r10 cp.w r10, 0 reteq r12 - extract.b r10, r8:l + bfextu r10, r8, 8, 8 st.b s1++, r10 cp.w r10, 0 reteq r12 - extract.b r10, r8:b - st.b s1++, r10 + st.b s1++, r8 retal r12 .size strcat, . - strcat diff --git a/libc/string/avr32/strcmp.S b/libc/string/avr32/strcmp.S index cc6e29e..2b729c6 100644 --- a/libc/string/avr32/strcmp.S +++ b/libc/string/avr32/strcmp.S @@ -25,26 +25,26 @@ strcmp: brne 1b retal 0 -2: extract.b r12, r8:t - extract.b r11, r9:t +2: bfextu r12, r8, 24, 8 + bfextu r11, r9, 24, 8 sub r12, r11 retne r12 cp.w r11, 0 reteq 0 - extract.b r12, r8:u - extract.b r11, r9:u + bfextu r12, r8, 16, 8 + bfextu r11, r9, 16, 8 sub r12, r11 retne r12 cp.w r11, 0 reteq 0 - extract.b r12, r8:l - extract.b r11, r9:l + bfextu r12, r8, 8, 8 + bfextu r11, r9, 8, 8 sub r12, r11 retne r12 cp.w r11, 0 reteq 0 - extract.b r12, r8:b - extract.b r11, r9:b + bfextu r12, r8, 0, 8 + bfextu r11, r9, 0, 8 sub r12, r11 retal r12 diff --git a/libc/string/avr32/strcpy.S b/libc/string/avr32/strcpy.S index 2549712..0e157c7 100644 --- a/libc/string/avr32/strcpy.S +++ b/libc/string/avr32/strcpy.S @@ -34,20 +34,19 @@ strcpy: * Ok, r8 now contains the terminating '\0'. Copy the * remaining bytes individually. */ - extract.b r10, r8:t + bfextu r10, r8, 24, 8 st.b dst++, r10 cp.w r10, 0 reteq r12 - extract.b r10, r8:u + bfextu r10, r8, 16, 8 st.b dst++, r10 cp.w r10, 0 reteq r12 - extract.b r10, r8:l + bfextu r10, r8, 8, 8 st.b dst++, r10 cp.w r10, 0 reteq r12 - extract.b r10, r8:b - st.b dst++, r10 + st.b dst++, r8 retal r12 .Lunaligned_src: diff --git a/libc/string/avr32/strlen.S b/libc/string/avr32/strlen.S index 375c72e..1d09444 100644 --- a/libc/string/avr32/strlen.S +++ b/libc/string/avr32/strlen.S @@ -19,15 +19,15 @@ strlen: brne 1b sub r12, r11 - extract.b r9, r8:t + bfextu r9, r8, 24, 8 cp.w r9, 0 subeq r12, 4 reteq r12 - extract.b r9, r8:u + bfextu r9, r8, 16, 8 cp.w r9, 0 subeq r12, 3 reteq r12 - extract.b r9, r8:l + bfextu r9, r8, 8, 8 cp.w r9, 0 subeq r12, 2 reteq r12 diff --git a/libc/string/avr32/strncpy.S b/libc/string/avr32/strncpy.S index fce60c8..95aed0d 100644 --- a/libc/string/avr32/strncpy.S +++ b/libc/string/avr32/strncpy.S @@ -42,26 +42,25 @@ strncpy: * Ok, r8 now contains the terminating '\0'. Copy the * remaining bytes individually. */ - extract.b r11, r8:t + bfextu r11, r8, 24, 8 st.b dst++, r11 cp.w r11, 0 reteq r12 sub r10, 1 reteq r12 - extract.b r11, r8:u + bfextu r11, r8, 16, 8 st.b dst++, r11 cp.w r11, 0 reteq r12 sub r10, 1 reteq r12 - extract.b r11, r8:l + bfextu r11, r8, 8, 8 st.b dst++, r11 cp.w r11, 0 reteq r12 sub r10, 1 reteq r12 - extract.b r10, r8:b - st.b dst++, r10 + st.b dst++, r8 retal r12 .Lunaligned_src: -- 1.4.0