Lines Matching +full:4 +full:- +full:16

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
21 mov x13, #-1
25 * into unmapped page. If so, we load 16 bytes from the nearest
29 add x3, x0, #16 // end of head
30 add x4, x1, #16
44 cmeq v5.16b, v0.16b, #0
45 cmeq v6.16b, v2.16b, #0
47 shrn v5.8b, v5.8h, #4
48 shrn v6.8b, v6.8h, #4
60 tbl v0.16b, {v0.16b}, v4.16b
63 .p2align 4
71 tbl v4.16b, {v2.16b}, v4.16b
75 .p2align 4
82 cmeq v2.16b, v0.16b, #0 // NUL byte present?
83 cmeq v4.16b, v0.16b, v4.16b // which bytes match?
85 orn v2.16b, v2.16b, v4.16b // mismatch or NUL byte?
87 shrn v2.8b, v2.8h, #4
92 ldr q2, [x8, #16] // load second chunk
93 ldr q3, [x10, #16]
97 ldr q0, [x12, #16]!
101 cmeq v1.16b, v3.16b, #0
102 cmeq v0.16b, v0.16b, v2.16b
103 add x8, x8, #16
104 shrn v1.8b, v1.8h, #4
106 shrn v0.8b, v0.8h, #4
111 add x8, x8, #16 // advance aligned pointers
116 * v ------1------ v ------2------ v
127 .p2align 4
133 cmeq v1.16b, v1.16b, #0 // end of string?
134 cmeq v0.16b, v0.16b, v2.16b // do the chunks match?
136 shrn v1.8b, v1.8h, #4
138 shrn v0.8b, v0.8h, #4
144 add x8, x8, #16
150 add x8, x8, #16
151 cmeq v1.16b, v1.16b, #0
152 cmeq v0.16b, v0.16b, v2.16b
154 shrn v1.8b, v1.8h, #4
156 shrn v0.8b, v0.8h, #4
162 sub x8, x8, #16 // roll back second increment
174 .p2align 4
176 sub x8, x8, #16
182 ubfiz x7, x7, #2, #4 // x7 = (x7 & 0xf) << 2
195 cmeq v1.16b, v0.16b, v1.16b
196 shrn v1.8b, v1.8h, #4
213 .p2align 4
228 .p2align 4
231 ldr q0, [x12, #16]!
236 cmeq v1.16b, v2.16b, #0
237 cmeq v0.16b, v0.16b, v3.16b
238 add x10, x10, #16
239 shrn v1.8b, v1.8h, #4
241 shrn v0.8b, v0.8h, #4
246 add x10, x10, #16
251 * v ------1------ v ------2------ v
262 .p2align 4
268 cmeq v1.16b, v1.16b, #0
269 cmeq v0.16b, v0.16b, v2.16b
271 shrn v1.8b, v1.8h, #4
273 shrn v0.8b, v0.8h, #4
279 add x10, x10, #16
285 add x10, x10, #16
286 cmeq v1.16b, v1.16b, #0
287 cmeq v0.16b, v0.16b, v2.16b
289 shrn v1.8b, v1.8h, #4
291 shrn v0.8b, v0.8h, #4
297 sub x10, x10, #16
310 .p2align 4
312 sub x10, x10, #16
317 ubfiz x7, x7, #2, #4
325 cmeq v1.16b, v0.16b, v1.16b
326 shrn v1.8b, v1.8h, #4
346 .p2align 4
348 .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
349 .fill 16, 1, -1
350 .size shift_data, .-shift_data