Skip to content

Commit

Permalink
Use sfi_* macros in armv6t2 strlen.
Browse files Browse the repository at this point in the history
  • Loading branch information
Roland McGrath committed Aug 30, 2013
1 parent 21bfcec commit b0350db
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
2 changes: 2 additions & 0 deletions ports/ChangeLog.arm
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
2013-08-30 Roland McGrath <roland@hack.frob.com>

* sysdeps/arm/armv6t2/strlen.S: Use sfi_pld and sfi_breg macros.

* sysdeps/arm/armv6t2/strlen.S: Include <arm-features.h> first thing.
[NO_THUMB]: Adapt code for ARM mode.

Expand Down
23 changes: 14 additions & 9 deletions ports/sysdeps/arm/armv6t2/strlen.S
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
.text
.p2align 6
ENTRY(strlen)
pld [srcin, #0]
sfi_pld srcin, #0
strd r4, r5, [sp, #-8]!
cfi_adjust_cfa_offset (8)
cfi_rel_offset (r4, 0)
Expand All @@ -76,14 +76,15 @@ ENTRY(strlen)
bic src, srcin, #7
mvn const_m1, #0
ands tmp1, srcin, #7 /* (8 - bytes) to alignment. */
pld [src, #32]
sfi_pld src, #32
bne.w .Lmisaligned8
mov const_0, #0
mov result, #-8
.Lloop_aligned:
/* Bytes 0-7. */
ldrd data1a, data1b, [src]
pld [src, #64]
sfi_breg src, \
ldrd data1a, data1b, [\B]
sfi_pld src, #64
add result, result, #8
.Lstart_realigned:
uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
Expand All @@ -93,7 +94,8 @@ ENTRY(strlen)
cbnz data1b, .Lnull_found

/* Bytes 8-15. */
ldrd data1a, data1b, [src, #8]
sfi_breg src, \
ldrd data1a, data1b, [\B, #8]
uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
add result, result, #8
sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */
Expand All @@ -102,7 +104,8 @@ ENTRY(strlen)
cbnz data1b, .Lnull_found

/* Bytes 16-23. */
ldrd data1a, data1b, [src, #16]
sfi_breg src, \
ldrd data1a, data1b, [\B, #16]
uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
add result, result, #8
sel data1a, const_0, const_m1 /* Select based on GE<0:3>. */
Expand All @@ -111,7 +114,8 @@ ENTRY(strlen)
cbnz data1b, .Lnull_found

/* Bytes 24-31. */
ldrd data1a, data1b, [src, #24]
sfi_breg src, \
ldrd data1a, data1b, [\B, #24]
add src, src, #32
uadd8 data1a, data1a, const_m1 /* Saturating GE<0:3> set. */
add result, result, #8
Expand Down Expand Up @@ -139,12 +143,13 @@ ENTRY(strlen)

.Lmisaligned8:
cfi_restore_state
ldrd data1a, data1b, [src]
sfi_breg src, \
ldrd data1a, data1b, [\B]
and tmp2, tmp1, #3
rsb result, tmp1, #0
lsl tmp2, tmp2, #3 /* Bytes -> bits. */
tst tmp1, #4
pld [src, #64]
sfi_pld src, #64
S2HI tmp2, const_m1, tmp2
#ifdef NO_THUMB
mvn tmp1, tmp2
Expand Down

0 comments on commit b0350db

Please sign in to comment.