Here, b is assumed to contain one 32-bit value repeated.
| 1230 | |
| 1231 | // Here, b is assumed to contain one 32-bit value repeated. |
| 1232 | static inline __m512i libdivide_mullhi_u32_vector(__m512i a, __m512i b) { |
| 1233 | __m512i hi_product_0Z2Z = _mm512_srli_epi64(_mm512_mul_epu32(a, b), 32); |
| 1234 | __m512i a1X3X = _mm512_srli_epi64(a, 32); |
| 1235 | __m512i mask = _mm512_set_epi32(-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0); |
| 1236 | __m512i hi_product_Z1Z3 = _mm512_and_si512(_mm512_mul_epu32(a1X3X, b), mask); |
| 1237 | return _mm512_or_si512(hi_product_0Z2Z, hi_product_Z1Z3); |
| 1238 | } |
| 1239 | |
| 1240 | // b is one 32-bit value repeated. |
| 1241 | static inline __m512i libdivide_mullhi_s32_vector(__m512i a, __m512i b) { |
no outgoing calls
no test coverage detected