Lines Matching +full:48 +full:- +full:bit

7 //      http://www.apache.org/licenses/LICENSE-2.0
17 // We are using (a modified form of) adler-32 checksum algorithm instead
18 // of CRC since adler-32 is faster than CRC.
19 // (Comparison: http://guru.multimedia.cx/crc32-vs-adler32/)
20 // This form of adler is bit modified, instead of treating the data in
21 // units of bytes, 32-bit data is taken as a unit and two 64-bit
25 // Adler-32 implementation:
26 // Data is treated as 1-byte numbers and,
27 // there are two 16-bit numbers a and b
35 // Adler-64+64 implementation:
37 // Data is treated as 32-bit numbers and whole data is separated into two
88 // Use this data wrapper to access memory with 64bit read/write. in CalculateAdlerChecksum()
119 checksum->Set(a1, a2, b1, b2); in CalculateAdlerChecksum()
126 // Use this data wrapper to access memory with 64bit read/write. in AdlerMemcpyC()
159 checksum->Set(a1, a2, b1, b2); in AdlerMemcpyC()
167 // Use this data wrapper to access memory with 64bit read/write. in AdlerMemcpyWarmC()
221 checksum->Set(a1, a2, b1, b2); in AdlerMemcpyWarmC()
231 // Pull a bit of tricky preprocessing to make the inline asm both in AdlerMemcpyAsm()
232 // 32 bit and 64 bit. in AdlerMemcpyAsm()
269 // Number of 32-bit words which are not added to a1/a2 in the main loop. in AdlerMemcpyAsm()
270 uint32 remaining_words = (size_in_bytes % 48) / 4; in AdlerMemcpyAsm()
272 // Since we are moving 48 bytes at a time number of iterations = total size/48 in AdlerMemcpyAsm()
274 uint32 num_of_48_byte_units = size_in_bytes / 48; in AdlerMemcpyAsm()
287 "movdqu 48(" rAX "), %%xmm6;" in AdlerMemcpyAsm()
290 // Start of the loop which copies 48 bytes from source to dst each time. in AdlerMemcpyAsm()
336 // Increment ESI and EDI by 48 bytes and decrement counter by 1. in AdlerMemcpyAsm()
337 "add $48, " rSI ";" in AdlerMemcpyAsm()
338 "add $48, " rDI ";" in AdlerMemcpyAsm()
344 // Now only remaining_words 32-bit words are left. in AdlerMemcpyAsm()
356 // Otherwise just go on and copy data in chunks of 4-words at a time till in AdlerMemcpyAsm()
357 // whole data (<48 bytes) is copied. in AdlerMemcpyAsm()
358 "movdqa 0(" rSI "), %%xmm0;" // Copy next 4-words to XMM0 and to XMM1. in AdlerMemcpyAsm()
363 "movntdq %%xmm0, 0(" rDI ");" // Copy 4-words to destination. in AdlerMemcpyAsm()
373 // Decrement %rDX by 4 since %rDX is number of 32-bit in AdlerMemcpyAsm()
374 // words left after considering all 48-byte units. in AdlerMemcpyAsm()
379 // 64 bit numbers and have to be converted to 64 bit numbers) in AdlerMemcpyAsm()
394 checksum->Set(checksum_arr[0], checksum_arr[1], in AdlerMemcpyAsm()
444 // Start of the loop which copies 48 bytes from source to dst each time. in AdlerMemcpyAsm()
449 // word index 0 and word index 2. We'll swizzle them in a bit. in AdlerMemcpyAsm()
467 // Repeat this for q8 - q13. in AdlerMemcpyAsm()
497 // 64 bit numbers and have to be converted to 64 bit numbers) in AdlerMemcpyAsm()
510 checksum->Set(checksum_arr[0], checksum_arr[1], in AdlerMemcpyAsm()