src/dpdk/lib/librte_net/net_crc_neon.c
static inline uint64x2_t
crcr32_reduce_128_to_64(uint64x2_t data128,
	uint64x2_t precomp)
{
	uint64x2_t tmp0, tmp1, tmp2;

	/* 64b fold */
	tmp0 = vreinterpretq_u64_p128(vmull_p64(
		vgetq_lane_p64(vreinterpretq_p64_u64(data128), 0),
		vgetq_lane_p64(vreinterpretq_p64_u64(precomp), 0)));
	tmp1 = vshift_bytes_right(data128, 8);
	tmp0 = veorq_u64(tmp0, tmp1);

	/* 32b fold */
	tmp2 = vshift_bytes_left(tmp0, 4);
	tmp1 = vreinterpretq_u64_p128(vmull_p64(
		vgetq_lane_p64(vreinterpretq_p64_u64(tmp2), 0),
		vgetq_lane_p64(vreinterpretq_p64_u64(precomp), 1)));

	return veorq_u64(tmp1, tmp0);
}
/**
 * Performs reduction from 128 bits to 64 bits
 *
 * @param data128 128 bits data to be reduced
 * @param precomp rk5 and rk6 precomputed constants
 *
 * @return data reduced to 64 bits
 */
Performs reduction from 128 bits to 64 bits
@param data128 128 bits data to be reduced
@param precomp rk5 and rk6 precomputed constants

@return data reduced to 64 bits
Performs reduction from 128 bits to 64 bits @param data128 128 bits data to be reduced @param precomp rk5 and rk6 precomputed constants @return data reduced to 64 bits
static inline uint64x2_t
crcr32_reduce_128_to_64(uint64x2_t data128,
	uint64x2_t precomp)
{
	uint64x2_t tmp0, tmp1, tmp2;
	tmp0 = vreinterpretq_u64_p128(vmull_p64(
		vgetq_lane_p64(vreinterpretq_p64_u64(data128), 0),
		vgetq_lane_p64(vreinterpretq_p64_u64(precomp), 0)));
	tmp1 = vshift_bytes_right(data128, 8);
	tmp0 = veorq_u64(tmp0, tmp1);
	tmp2 = vshift_bytes_left(tmp0, 4);
	tmp1 = vreinterpretq_u64_p128(vmull_p64(
		vgetq_lane_p64(vreinterpretq_p64_u64(tmp2), 0),
		vgetq_lane_p64(vreinterpretq_p64_u64(precomp), 1)));
	return veorq_u64(tmp1, tmp0);
}
static inline uint64x2_t crcr32_reduce_128_to_64 ( uint64x2_t data128 , uint64x2_t precomp ) { uint64x2_t tmp0 , tmp1 , tmp2 ; tmp0 = vreinterpretq_u64_p128 ( vmull_p64 ( vgetq_lane_p64 ( vreinterpretq_p64_u64 ( data128 ) , 0 ) , vgetq_lane_p64 ( vreinterpretq_p64_u64 ( precomp ) , 0 ) ) ) ; tmp1 = vshift_bytes_right ( data128 , 8 ) ; tmp0 = veorq_u64 ( tmp0 , tmp1 ) ; tmp2 = vshift_bytes_left ( tmp0 , 4 ) ; tmp1 = vreinterpretq_u64_p128 ( vmull_p64 ( vgetq_lane_p64 ( vreinterpretq_p64_u64 ( tmp2 ) , 0 ) , vgetq_lane_p64 ( vreinterpretq_p64_u64 ( precomp ) , 1 ) ) ) ; return veorq_u64 ( tmp1 , tmp0 ) ; }
Performs reduction from 128 bits to 64 bits
 @param data128 128 bits data to be reduced
 @param precomp rk5 and rk6 precomputed constants
Performs reduction from 128 bits to 64 bits @param data128 128 bits data to be reduced @param precomp rk5 and rk6 precomputed constants
/* 64b fold */ /* 32b fold */