summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ted Green <tedgreen99@protonmail.com>2017-09-29 10:32:33 -0600
committer Ted Green <tedgreen99@protonmail.com>2017-09-29 11:05:14 -0600
commit93c7761d9d4a0da8a9491cc06b310cc6d4019f5f (patch)
tree2ffc170a9f0075465929e3779cbfa91ffa04292e
parentc31dfdcfda8b724c8f211f11fe60f6ea530f7cda (diff)
rgbsse: Rather simple performance optimization. (nw)
-rw-r--r--src/emu/validity.cpp8
-rw-r--r--src/emu/video/rgbsse.h4
2 files changed, 10 insertions, 2 deletions
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index 618214970c2..b7b6f0d6f90 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -597,6 +597,14 @@ void validity_checker::validate_rgb()
rgb.set(rgbaint_t(expected_a, expected_r, expected_g, expected_b));
check_expected("rgbaint_t::set(rgbaint_t)");
+ packed = random_i32();
+ expected_a = packed.a();
+ expected_r = packed.r();
+ expected_g = packed.g();
+ expected_b = packed.b();
+ rgb.set(packed);
+ check_expected("rgbaint_t::set(const rgb_t& rgb)");
+
// check construct/assign
expected_a = random_i32();
expected_r = random_i32();
diff --git a/src/emu/video/rgbsse.h b/src/emu/video/rgbsse.h
index ce7c848ae4d..68e57bca7fd 100644
--- a/src/emu/video/rgbsse.h
+++ b/src/emu/video/rgbsse.h
@@ -38,9 +38,9 @@ public:
rgbaint_t &operator=(const rgbaint_t& other) = default;
void set(const rgbaint_t& other) { m_value = other.m_value; }
- void set(u32 rgba) { m_value = _mm_and_si128(_mm_set1_epi32(0xff), _mm_set_epi32(rgba >> 24, rgba >> 16, rgba >> 8, rgba)); }
+ void set(const u32& rgba) { m_value = _mm_unpacklo_epi16(_mm_unpacklo_epi8(_mm_cvtsi32_si128(rgba), _mm_setzero_si128()), _mm_setzero_si128()); }
void set(s32 a, s32 r, s32 g, s32 b) { m_value = _mm_set_epi32(a, r, g, b); }
- void set(const rgb_t& rgb) { m_value = _mm_unpacklo_epi16(_mm_unpacklo_epi8(_mm_cvtsi32_si128(rgb), _mm_setzero_si128()), _mm_setzero_si128()); }
+ void set(const rgb_t& rgb) { set((const u32&) rgb); }
inline rgb_t to_rgba() const
{