• Home
  • Raw
  • Download

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

6  * and re-licensed under GPLv2 for the Linux kernel. The original code can
9 * http://bazaar.launchpad.net/~linaro-toolchain-dev/cortex-strings/trunk/
32 * x0 - const string 1 pointer
33 * x1 - const string 2 pointer
35 * x0 - an integer less than, equal to, or greater than zero
72 * NUL detection works on the principle that (X - 1) & (~X) & 0x80
73 * (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and
82 eor diff, data1, data2 /* Non-zero if differences found. */
83 bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */
96 lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */
98 neg tmp1, tmp1 /* Bits to alignment -64. */
101 /* Big-endian. Early bytes are at MSB. */
103 /* Little-endian. Early bytes are at LSB. */
144 /*load 8 bytes from aligned str1 and non-aligned str2..*/
151 eor diff, data1, data2 /* Non-zero if differences found. */
173 eor diff, data1, data2 /* Non-zero if differences found. */
183 eor diff, data1, data2 /* Non-zero if differences found. */
189 * reversed the byte-order as big-endian,then CLZ can find the most
190 * significant zero bits.
197 * For big-endian we cannot use the trick with the syndrome value
198 * as carry-propagation can corrupt the upper bits if the trailing
210 /*Re-compute the NUL-byte detection, using a byte-reversed value. */
220 * The MS-non-zero bit of the syndrome marks either the first bit
221 * that is different, or the top bit of the first zero byte.
228 * But we need to zero-extend (char is unsigned) the value and then
229 * perform a signed 32-bit subtraction.