MCPcopy Create free account
hub / github.com/numpy/numpy / npyv_divc_s16

Function npyv_divc_s16

numpy/core/src/common/simd/sse/arithmetic.h:134–144  ·  view source on GitHub ↗

divide each signed 16-bit element by a precomputed divisor (round towards zero)

Source from the content-addressed store, hash-verified

132}
133// divide each signed 16-bit element by a precomputed divisor (round towards zero)
134NPY_FINLINE npyv_s16 npyv_divc_s16(npyv_s16 a, const npyv_s16x3 divisor)
135{
136 // high part of signed multiplication
137 __m128i mulhi = _mm_mulhi_epi16(a, divisor.val[0]);
138 // q = ((a + mulhi) >> sh1) - XSIGN(a)
139 // trunc(a/d) = (q ^ dsign) - dsign
140 __m128i q = _mm_sra_epi16(_mm_add_epi16(a, mulhi), divisor.val[1]);
141 q = _mm_sub_epi16(q, _mm_srai_epi16(a, 15));
142 q = _mm_sub_epi16(_mm_xor_si128(q, divisor.val[2]), divisor.val[2]);
143 return q;
144}
145// divide each unsigned 32-bit element by a precomputed divisor
146NPY_FINLINE npyv_u32 npyv_divc_u32(npyv_u32 a, const npyv_u32x3 divisor)
147{

Callers 1

npyv_divc_s8Function · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected