Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed-Point Helium Complex Multiplication saturation sensitivy #47

Open
FabKlein opened this issue Sep 22, 2022 · 0 comments
Open

Fixed-Point Helium Complex Multiplication saturation sensitivy #47

FabKlein opened this issue Sep 22, 2022 · 0 comments
Labels
bug Something isn't working enhancement New feature or request

Comments

@FabKlein
Copy link
Contributor

Combining vqdmlsdh and vqdmladhx for running complex multiplications operations on full scale vectors is likely to saturate
It would be safer to downscale the inputs prior to the multiplication.

arm_cmplx_mult_cmplx_q15/q31 would be modified the following way

{
            vecSrcA = vld1q(pSrcA);    pSrcA += ELTS(vecSrcA);
            vecSrcB = vld1q(pSrcB);    pSrcB += ELTS(vecSrcB);

           /* downscale inputs */          
            vecSrcA >>= 1;
            vecSrcB >>= 1;
         
            vecDst = vqdmlsdhq(vuninitializedq(vecSrcA), vecSrcA, vecSrcB);
            vecDst = vqdmladhxq(vecDst, vecSrcA, vecSrcB);

           vst1q(pDst, vecDst);           pDst += ELTS(vecDst);
}

In this case downscaling of the result before storing must be removed

Other locations involving vqdmlsdh / vqdmladhx pairs should be verified as well

@christophe0606 christophe0606 added bug Something isn't working enhancement New feature or request labels Sep 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants