Lines Matching refs:pattern
838 // Helper functions for fast pattern copy (8b and 32b)
840 // cyclic rotation of pattern word
849 // copy 1, 2 or 4-bytes pattern
851 int length, uint32_t pattern) {
853 // align 'dst' to 4-bytes boundary. Adjust the pattern along the way.
856 pattern = Rotate8b(pattern);
859 // Copy the pattern 4 bytes at a time.
861 ((uint32_t*)dst)[i] = pattern;
863 // Finish with left-overs. 'pattern' is still correctly positioned,
873 uint32_t pattern = 0;
876 pattern = src[0];
878 pattern |= pattern << 8;
879 pattern |= pattern << 16;
881 __asm__ volatile ("replv.qb %0, %0" : "+r"(pattern));
883 pattern = 0x01010101u * pattern;
887 memcpy(&pattern, src, sizeof(uint16_t));
889 pattern |= pattern << 16;
891 __asm__ volatile ("replv.ph %0, %0" : "+r"(pattern));
893 pattern = 0x00010001u * pattern;
897 memcpy(&pattern, src, sizeof(uint32_t));
903 CopySmallPattern8b(src, dst, length, pattern);
915 // copy pattern of 1 or 2 uint32_t's
918 int length, uint64_t pattern) {
922 pattern = (pattern >> 32) | (pattern << 32);
927 ((uint64_t*)dst)[i] = pattern; // Copy the pattern 8 bytes at a time.
938 uint64_t pattern;
940 pattern = (uint64_t)src[0];
941 pattern |= pattern << 32;
943 memcpy(&pattern, src, sizeof(pattern));
945 CopySmallPattern32b(src, dst, length, pattern);