From eddbd781af15f655a1dba6949e7c6b214f47e2f8 Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Thu, 20 Jul 2017 17:06:14 -0500 Subject: [PATCH] swr/rast: fix movemask_ps / movemask_pd on AVX512 Reviewed-by: Bruce Cherniak --- .../drivers/swr/rasterizer/common/simdlib_512_avx512.inl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/swr/rasterizer/common/simdlib_512_avx512.inl b/src/gallium/drivers/swr/rasterizer/common/simdlib_512_avx512.inl index 1001417704d..1dbfff8c9c1 100644 --- a/src/gallium/drivers/swr/rasterizer/common/simdlib_512_avx512.inl +++ b/src/gallium/drivers/swr/rasterizer/common/simdlib_512_avx512.inl @@ -554,15 +554,20 @@ static SIMDINLINE uint64_t SIMDCALL movemask_epi8(Integer a) static SIMDINLINE uint32_t SIMDCALL movemask_pd(Double a) { - __mmask8 m = _mm512_test_epi64_mask(castpd_si(a), set1_epi32(-1)); + __mmask8 m = _mm512_test_epi64_mask(castpd_si(a), set1_epi64(0x8000000000000000LL)); return static_cast(m); } static SIMDINLINE uint32_t SIMDCALL movemask_ps(Float a) { - __mmask16 m = _mm512_test_epi32_mask(castps_si(a), set1_epi32(-1)); + __mmask16 m = _mm512_test_epi32_mask(castps_si(a), set1_epi32(0x8000000)); return static_cast(m); } +static SIMDINLINE Integer SIMDCALL set1_epi64(long long i) // return i (all elements are same value) +{ + return _mm512_set1_epi64(i); +} + static SIMDINLINE Integer SIMDCALL set1_epi32(int i) // return i (all elements are same value) { return _mm512_set1_epi32(i); -- 2.30.2