strchr-700.S (e5451c8f8330e03ad3cfa16048b4daf961af434f) strchr-700.S (86effd0dc675c36caed7b954d7f4f63b77c353b5)
1/*
2 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9/* ARC700 has a relatively long pipeline and branch prediction, so we want
10 to avoid branches that are hard to predict. On the other hand, the
11 presence of the norm instruction makes it easier to operate on whole
12 words branch-free. */
13
14#include <linux/linkage.h>
15
1/*
2 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9/* ARC700 has a relatively long pipeline and branch prediction, so we want
10 to avoid branches that are hard to predict. On the other hand, the
11 presence of the norm instruction makes it easier to operate on whole
12 words branch-free. */
13
14#include <linux/linkage.h>
15
16ENTRY(strchr)
16ENTRY_CFI(strchr)
17 extb_s r1,r1
18 asl r5,r1,8
19 bmsk r2,r0,1
20 or r5,r5,r1
21 mov_s r3,0x01010101
22 breq.d r2,r0,.Laligned
23 asl r4,r5,16
24 sub_s r0,r0,r2

--- 100 unchanged lines hidden (view full) ---

125
126 add.pl r3,r3,1
127 asr_s r12,r3,3
128 asl.f 0,r2,r3
129 add_s r0,r0,r12
130 j_s.d [blink]
131 mov.mi r0,0
132#endif /* ENDIAN */
17 extb_s r1,r1
18 asl r5,r1,8
19 bmsk r2,r0,1
20 or r5,r5,r1
21 mov_s r3,0x01010101
22 breq.d r2,r0,.Laligned
23 asl r4,r5,16
24 sub_s r0,r0,r2

--- 100 unchanged lines hidden (view full) ---

125
126 add.pl r3,r3,1
127 asr_s r12,r3,3
128 asl.f 0,r2,r3
129 add_s r0,r0,r12
130 j_s.d [blink]
131 mov.mi r0,0
132#endif /* ENDIAN */
133END(strchr)
133END_CFI(strchr)