Lines Matching +full:0 +full:x10 +full:- +full:0 +full:x14

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
16 bic x8, x0, #0xf // x0 aligned to the boundary
17 and x9, x0, #0xf // x9 is the offset
18 bic x10, x1, #0xf // x1 aligned to the boundary
19 and x11, x1, #0xf // x11 is the offset
24 mov x13, #-1 // save constants for later
25 mov x16, #0xf
43 ldr q1, [x10]
45 lsl x14, x9, #2
47 lsl x3, x13, x14 // string head
50 cmeq v5.16b, v0.16b, #0
51 cmeq v6.16b, v1.16b, #0
58 adrp x14, shift_data
59 add x14, x14, :lo12:shift_data
63 b.eq 0f
65 ldr q4, [x14, x9] // load permutation table
70 0:
74 b.eq 0f
76 ldr q4, [x14, x11]
84 0:
87 cmeq v2.16b, v0.16b, #0 // NUL byte present?
98 ldr q3, [x10, #16]
103 subs x9, x9, x11 // is a&0xf >= b&0xf
117 ldr q1, [x10]
119 lsl x14, x9, #2
121 lsl x3, x13, x14 // string head
125 add x14, x2, x9
127 lsl x14, x14, #2
129 lsl x14, x16, x14
132 cmeq v5.16b, v0.16b, #0
133 cmeq v6.16b, v1.16b, #0
140 orr x5, x5, x14 // insert match at limit
143 adrp x14, shift_data
144 add x14, x14, :lo12:shift_data
148 b.eq 0f
150 ldr q4, [x14, x9] // load permutation table
155 0:
159 b.eq 0f
161 ldr q4, [x14, x11]
169 0:
173 cmeq v2.16b, v0.16b, #0 // NUL byte present?
195 sub x12, x10, x9
197 sub x10, x10, x8
198 sub x11, x10, x9
200 cmeq v1.16b, v3.16b, #0 // NUL present?
223 * v ------1------ v ------2------ v
235 0:
237 ldr q1, [x8, x10]
240 cmeq v1.16b, v1.16b, #0 // end of string?
255 ldr q1, [x8, x10]
259 cmeq v1.16b, v1.16b, #0
271 b.hs 0b // if yes, process tail
276 ldr q1, [x8, x10]
279 cmeq v1.16b, v1.16b, #0 // end of string?
306 ldr q1, [x8, x10]
310 cmeq v1.16b, v1.16b, #0
318 ubfiz x4, x2, #2, #4 // (x2 - 16) << 2
340 ldr q1, [x8, x10]
352 add x10, x10, x8 // restore x10 pointer
356 ldrb w5, [x10, x5]
375 * If (a&0xf) < (b&0xf), we do the same thing but with swapped
383 sub x8, x8, x10
388 cmeq v1.16b, v2.16b, #0
395 add x10, x10, #32
413 * v ------1------ v ------2------ v
425 0:
426 ldr q0, [x10, x11]
427 ldr q1, [x10, x8]
428 ldr q2, [x10]
430 cmeq v1.16b, v1.16b, #0
441 add x10, x10, #16
444 ldr q0, [x10, x11]
445 ldr q1, [x10, x8]
446 ldr q2, [x10]
448 add x10, x10, #16
449 cmeq v1.16b, v1.16b, #0
461 b.hs 0b
464 ldr q0, [x10, x11]
465 ldr q1, [x10, x8]
466 ldr q2, [x10]
468 cmeq v1.16b, v1.16b, #0
491 add x10, x10, #16
493 ldr q0, [x10, x11]
494 ldr q1, [x10, x8]
495 ldr q2, [x10]
497 add x10, x10, #16
498 cmeq v1.16b, v1.16b, #0
511 sub x10, x10, #16
522 ldr q0, [x10, x9]
523 ldr q1, [x10, x8]
535 add x11, x10, x8
536 add x10, x10, x9
538 ldrb w4, [x10, x5]
545 sub x10, x10, #16
550 add x11, x10, x11
552 ldrb w4, [x10, x3]
567 .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
568 .fill 16, 1, -1
569 .size shift_data, .-shift_data