summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/rsp/vaddc.h
blob: 0ebd30cbd31dbbb07d61a03b28beb1543456d7da (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
// license:BSD-3-Clause
// copyright-holders:Tyler J. Stachecki,Ryan Holtz

inline rsp_vec_t vec_vaddc(rsp_vec_t vs, rsp_vec_t vt, rsp_vec_t zero, rsp_vec_t *sn)
{
	rsp_vec_t sat_sum = _mm_adds_epu16(vs, vt);
	rsp_vec_t unsat_sum = _mm_add_epi16(vs, vt);

	*sn = _mm_cmpeq_epi16(sat_sum, unsat_sum);
	*sn = _mm_cmpeq_epi16(*sn, zero);

	return unsat_sum;
}