|
17 | 17 | #define crc32c_u16(crc, v) __crc32ch(crc, v) |
18 | 18 | #define crc32c_u32(crc, v) __crc32cw(crc, v) |
19 | 19 | #define crc32c_u64(crc, v) __crc32cd(crc, v) |
| 20 | +#define PREF4X64L1(buffer,PREF_OFFSET, ITR) \ |
| 21 | + __asm__("PRFM PLDL1KEEP, [%x[v],%[c]]"::[v]"r"(buffer), [c]"I"((PREF_OFFSET) + ((ITR) + 0)*64));\ |
| 22 | + __asm__("PRFM PLDL1KEEP, [%x[v],%[c]]"::[v]"r"(buffer), [c]"I"((PREF_OFFSET) + ((ITR) + 1)*64));\ |
| 23 | + __asm__("PRFM PLDL1KEEP, [%x[v],%[c]]"::[v]"r"(buffer), [c]"I"((PREF_OFFSET) + ((ITR) + 2)*64));\ |
| 24 | + __asm__("PRFM PLDL1KEEP, [%x[v],%[c]]"::[v]"r"(buffer), [c]"I"((PREF_OFFSET) + ((ITR) + 3)*64)); |
| 25 | + |
| 26 | +#define PREF1KL1(buffer,PREF_OFFSET) \ |
| 27 | + PREF4X64L1(buffer,(PREF_OFFSET), 0) \ |
| 28 | + PREF4X64L1(buffer,(PREF_OFFSET), 4) \ |
| 29 | + PREF4X64L1(buffer,(PREF_OFFSET), 8) \ |
| 30 | + PREF4X64L1(buffer,(PREF_OFFSET), 12) |
20 | 31 |
|
21 | 32 | extern uint32_t crc32c_arm64(uint32_t crc, unsigned char const *data, unsigned len); |
22 | 33 | extern uint32_t crc32c_runtime_check(void); |
|
0 commit comments