summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ted Green <tedgreen99@protonmail.com>2017-10-10 07:12:27 -0600
committer Ted Green <tedgreen99@protonmail.com>2017-10-10 07:12:57 -0600
commit1175023e9581d52473d493f5f950e523224de44f (patch)
tree36cc204f400e480b0e583be84ffe80c123ebbc71
parent1b9278eff0aa8a1feec556e781d87622bcd2d79c (diff)
rgbsse: Clamp intermediate values to u8. (nw)
-rw-r--r--src/emu/video/rgbsse.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/emu/video/rgbsse.h b/src/emu/video/rgbsse.h
index a9d9852a228..037515b4754 100644
--- a/src/emu/video/rgbsse.h
+++ b/src/emu/video/rgbsse.h
@@ -330,7 +330,10 @@ public:
m_value = _mm_slli_epi16(m_value, 4);
// Do the 16 bit multiply, bottom 64 bits will contain 16 bit truncated results
m_value = _mm_mulhi_epi16(m_value, tmp1);
- // Unpack into 32 bit values
+ // Clamp to u8
+ m_value = _mm_packus_epi16(m_value, _mm_setzero_si128());
+ // Unpack up to s32
+ m_value = _mm_unpacklo_epi8(m_value, _mm_setzero_si128());
m_value = _mm_unpacklo_epi16(m_value, _mm_setzero_si128());
add(other);
clamp_to_uint8();