strncmp.S revision 1.4
11.4Smatt/* $NetBSD: strncmp.S,v 1.4 2013/07/16 23:24:19 matt Exp $ */ 21.1Schristos 31.1Schristos/*- 41.1Schristos * Copyright (c) 1997 The NetBSD Foundation, Inc. 51.1Schristos * All rights reserved. 61.1Schristos * 71.1Schristos * This code is derived from software contributed to The NetBSD Foundation 81.1Schristos * by Hiroshi Horimoto <horimoto@cs-aoi.cs.sist.ac.jp> and 91.1Schristos * by J.T. Conklin <jtc@NetBSD.org>. 101.1Schristos * 111.1Schristos * Redistribution and use in source and binary forms, with or without 121.1Schristos * modification, are permitted provided that the following conditions 131.1Schristos * are met: 141.1Schristos * 1. Redistributions of source code must retain the above copyright 151.1Schristos * notice, this list of conditions and the following disclaimer. 161.1Schristos * 2. Redistributions in binary form must reproduce the above copyright 171.1Schristos * notice, this list of conditions and the following disclaimer in the 181.1Schristos * documentation and/or other materials provided with the distribution. 191.1Schristos * 201.1Schristos * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 211.1Schristos * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 221.1Schristos * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 231.1Schristos * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 241.1Schristos * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 251.1Schristos * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 261.1Schristos * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 271.1Schristos * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 281.1Schristos * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 291.1Schristos * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 301.1Schristos * POSSIBILITY OF SUCH DAMAGE. 311.1Schristos */ 321.1Schristos 331.1Schristos#include <machine/asm.h> 341.1Schristos 351.1Schristos#if defined(LIBC_SCCS) && !defined(lint) 361.4Smatt RCSID("$NetBSD: strncmp.S,v 1.4 2013/07/16 23:24:19 matt Exp $") 371.1Schristos#endif /* LIBC_SCCS and not lint */ 381.1Schristos 391.1SchristosENTRY(strncmp) 401.3Smatt movl 12(%sp),%d0 411.1Schristos jeq L4 421.3Smatt movl 4(%sp),%a0 431.3Smatt movl 8(%sp),%a1 441.1SchristosL1: /* unroll by 4 for m680[23]0's */ 451.3Smatt movb (%a0)+,%d1 461.1Schristos jeq L2 471.3Smatt subb (%a1)+,%d1 481.1Schristos jne L3 491.1Schristos subql #1,%d0 501.1Schristos jeq L4 511.1Schristos 521.3Smatt movb (%a0)+,%d1 531.1Schristos jeq L2 541.3Smatt subb (%a1)+,%d1 551.1Schristos jne L3 561.1Schristos subql #1,%d0 571.1Schristos jeq L4 581.1Schristos 591.3Smatt movb (%a0)+,%d1 601.1Schristos jeq L2 611.3Smatt subb (%a1)+,%d1 621.1Schristos jne L3 631.1Schristos subql #1,%d0 641.1Schristos jeq L4 651.1Schristos 661.3Smatt movb (%a0)+,%d1 671.1Schristos jeq L2 681.3Smatt subb (%a1)+,%d1 691.1Schristos jne L3 701.1Schristos subql #1,%d0 711.1Schristos jne L1 721.1SchristosL4: rts 731.1Schristos 741.3SmattL2: subb (%a1),%d1 751.1SchristosL3: scs %d0 761.1Schristos EXTBL(%d0) 771.1Schristos movb %d1,%d0 781.1Schristos rts 791.4SmattEND(strncmp) 80