Lines Matching +full:non +full:- +full:zero

1 /* SPDX-License-Identifier: GPL-2.0-only */
9 * http://bazaar.launchpad.net/~linaro-toolchain-dev/cortex-strings/trunk/
20 * x0 - const string 1 pointer
21 * x1 - const string 2 pointer
23 * x0 - an integer less than, equal to, or greater than zero
60 * NUL detection works on the principle that (X - 1) & (~X) & 0x80
61 * (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and
70 eor diff, data1, data2 /* Non-zero if differences found. */
71 bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */
84 lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */
86 neg tmp1, tmp1 /* Bits to alignment -64. */
89 /* Big-endian. Early bytes are at MSB. */
91 /* Little-endian. Early bytes are at LSB. */
132 /*load 8 bytes from aligned str1 and non-aligned str2..*/
139 eor diff, data1, data2 /* Non-zero if differences found. */
161 eor diff, data1, data2 /* Non-zero if differences found. */
171 eor diff, data1, data2 /* Non-zero if differences found. */
177 * reversed the byte-order as big-endian,then CLZ can find the most
178 * significant zero bits.
185 * For big-endian we cannot use the trick with the syndrome value
186 * as carry-propagation can corrupt the upper bits if the trailing
198 /*Re-compute the NUL-byte detection, using a byte-reversed value. */
208 * The MS-non-zero bit of the syndrome marks either the first bit
209 * that is different, or the top bit of the first zero byte.
216 * But we need to zero-extend (char is unsigned) the value and then
217 * perform a signed 32-bit subtraction.