* sysdeps/ia64/memchr.S: Add .pred.rel to avoid wrong assembler
	warnings.
	* sysdeps/ia64/memccpy.S: Likewise.
	Patches by Jim Wilson <wilson@redhat.com>.
This commit is contained in:
Ulrich Drepper 2000-09-09 08:04:57 +00:00
parent fc5f4a9748
commit a1ce647f88
3 changed files with 13 additions and 6 deletions

View File

@ -1,5 +1,10 @@
2000-09-09 Ulrich Drepper <drepper@redhat.com> 2000-09-09 Ulrich Drepper <drepper@redhat.com>
* sysdeps/ia64/memchr.S: Add .pred.rel to avoid wrong assembler
warnings.
* sysdeps/ia64/memccpy.S: Likewise.
Patches by Jim Wilson <wilson@redhat.com>.
* sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname
before trying to read /proc. before trying to read /proc.
Patch by Matt Wilson <msw@redhat.com>. Patch by Matt Wilson <msw@redhat.com>.

View File

@ -25,9 +25,9 @@
in1: src in1: src
in2: char in2: char
in3: byte count in3: byte count
This implementation assumes little endian mode (UM.be = 0). This implementation assumes little endian mode (UM.be = 0).
This implementation assumes that it is safe to do read ahead This implementation assumes that it is safe to do read ahead
in the src block, without getting beyond its limit. */ in the src block, without getting beyond its limit. */
@ -83,10 +83,10 @@ ENTRY(memccpy)
.l1: // copy -dest % 8 bytes .l1: // copy -dest % 8 bytes
ld1 value = [src], 1 // value = *src++ ld1 value = [src], 1 // value = *src++
;; ;;
st1 [dest] = value, 1 // *dest++ = value st1 [dest] = value, 1 // *dest++ = value
cmp.eq p6, p0 = value, char cmp.eq p6, p0 = value, char
(p6) br.cond.spnt .foundit (p6) br.cond.spnt .foundit
br.cloop.dptk .l1 br.cloop.dptk .l1
.dest_aligned: .dest_aligned:
and sh1 = 7, src // sh1 = src % 8 and sh1 = 7, src // sh1 = src % 8
and tmp = -8, len // tmp = len & -OPSIZ and tmp = -8, len // tmp = len & -OPSIZ
@ -105,7 +105,7 @@ ENTRY(memccpy)
ld8 r[1] = [asrc], 8 // r[1] = w0 ld8 r[1] = [asrc], 8 // r[1] = w0
cmp.ne p6, p0 = r0, r0 ;; // clear p6 cmp.ne p6, p0 = r0, r0 ;; // clear p6
.align 32 .align 32
.l2: .l2:
(p[0]) ld8 r[0] = [asrc], 8 // r[0] = w1 (p[0]) ld8 r[0] = [asrc], 8 // r[0] = w1
(p[MEMLAT]) shr.u tmp1[0] = r[1 + MEMLAT], sh1 // tmp1 = w0 >> sh1 (p[MEMLAT]) shr.u tmp1[0] = r[1 + MEMLAT], sh1 // tmp1 = w0 >> sh1
(p[MEMLAT]) shl tmp2[0] = r[0 + MEMLAT], sh2 // tmp2 = w1 << sh2 (p[MEMLAT]) shl tmp2[0] = r[0 + MEMLAT], sh2 // tmp2 = w1 << sh2
@ -148,6 +148,7 @@ ENTRY(memccpy)
mov ar.lc = saved_lc // restore the loop counter mov ar.lc = saved_lc // restore the loop counter
br.ret.sptk.many b0 br.ret.sptk.many b0
.gotit: .gotit:
.pred.rel "mutex" p6, p7
(p6) mov value = val[3] // if coming from l2 (p6) mov value = val[3] // if coming from l2
(p7) mov value = r[MEMLAT+2] // if coming from l3 (p7) mov value = r[MEMLAT+2] // if coming from l3
mov ar.lc = pos0[1] ;; mov ar.lc = pos0[1] ;;
@ -160,5 +161,5 @@ ENTRY(memccpy)
mov ar.pfs = saved_pfs mov ar.pfs = saved_pfs
mov pr = saved_pr, -1 mov pr = saved_pr, -1
mov ar.lc = saved_lc mov ar.lc = saved_lc
br.ret.sptk.many b0 br.ret.sptk.many b0
END(memccpy) END(memccpy)

View File

@ -114,6 +114,7 @@ ENTRY(__memchr)
cmp.ne p6, p0 = r0, r0 // clear p6 (p7 was already 0 when we got here) cmp.ne p6, p0 = r0, r0 // clear p6 (p7 was already 0 when we got here)
mov ret0 = r0 ;; // return NULL mov ret0 = r0 ;; // return NULL
.foundit: .foundit:
.pred.rel "mutex" p6, p7
(p6) adds ret0 = -1, ret0 // if we got here from l1 or l3 (p6) adds ret0 = -1, ret0 // if we got here from l1 or l3
(p7) add ret0 = addr[MEMLAT+2], poschr[1] // if we got here from l2 (p7) add ret0 = addr[MEMLAT+2], poschr[1] // if we got here from l2
mov pr = saved_pr, -1 mov pr = saved_pr, -1