1*061cef5fSArd Biesheuvel // SPDX-License-Identifier: GPL-2.0-only 2*061cef5fSArd Biesheuvel 3*061cef5fSArd Biesheuvel static inline uint64x2_t pmull64(uint64x2_t a, uint64x2_t b) 4*061cef5fSArd Biesheuvel { 5*061cef5fSArd Biesheuvel return vreinterpretq_u64_p128(vmull_p64(vgetq_lane_u64(a, 0), 6*061cef5fSArd Biesheuvel vgetq_lane_u64(b, 0))); 7*061cef5fSArd Biesheuvel } 8*061cef5fSArd Biesheuvel 9*061cef5fSArd Biesheuvel static inline uint64x2_t pmull64_high(uint64x2_t a, uint64x2_t b) 10*061cef5fSArd Biesheuvel { 11*061cef5fSArd Biesheuvel poly64x2_t l = vreinterpretq_p64_u64(a); 12*061cef5fSArd Biesheuvel poly64x2_t m = vreinterpretq_p64_u64(b); 13*061cef5fSArd Biesheuvel 14*061cef5fSArd Biesheuvel return vreinterpretq_u64_p128(vmull_high_p64(l, m)); 15*061cef5fSArd Biesheuvel } 16*061cef5fSArd Biesheuvel 17*061cef5fSArd Biesheuvel static inline uint64x2_t pmull64_hi_lo(uint64x2_t a, uint64x2_t b) 18*061cef5fSArd Biesheuvel { 19*061cef5fSArd Biesheuvel return vreinterpretq_u64_p128(vmull_p64(vgetq_lane_u64(a, 1), 20*061cef5fSArd Biesheuvel vgetq_lane_u64(b, 0))); 21*061cef5fSArd Biesheuvel } 22