summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/rsp/vaddc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/rsp/vaddc.h')
-rw-r--r--src/devices/cpu/rsp/vaddc.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/devices/cpu/rsp/vaddc.h b/src/devices/cpu/rsp/vaddc.h
new file mode 100644
index 00000000000..0ebd30cbd31
--- /dev/null
+++ b/src/devices/cpu/rsp/vaddc.h
@@ -0,0 +1,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;
+}