[opus] [PATCH] Optimize silk_LPC_inverse_pred_gain() for ARM NEON

Jean-Marc Valin jmvalin at jmvalin.ca
Wed Feb 15 07:35:00 UTC 2017


Hi Linfeng,

Thanks for the updated patch. Just pushed it to master. One thing that
still bothers me a bit is that the
if( ( max > 0 ) || ( min < -1 ) )
line is still pretty much untested. By which I mean that if I remove the
condition, then the tests (including the new unit tests) still pass. I
wasn't able to figure out a case that triggers it -- and I'm not even
100% sure it's actually possible. It would be nice if you could look
into that, but I didn't think it was worth holding up your patch over that.

Cheers,

	Jean-Marc

On 14/02/17 08:18 PM, Linfeng Zhang wrote:
> Hi Jean-Marc, (forgot cc opus@)
> 
> Thanks for creating the unit test code.
> 
> Attached is the updated optimization patch.
> 
> On Mon, Feb 13, 2017 at 10:17 AM, Jean-Marc Valin <jmvalin at jmvalin.ca
> <mailto:jmvalin at jmvalin.ca>> wrote:
> 
>     On 13/02/17 01:09 PM, Linfeng Zhang wrote:
>     > For 1), I agree that an explicit unit test would be a good plus to cover
>     > the cases that "make check" cannot trigger. If you like, we may submit
>     > an unit test patch for code review.
> 
>     Yes, please include a unit test that triggers the overflow detection.
>     Once that works, I think we can merge this optimization.
> 
>     Cheers,
> 
>             Jean-Marc
> 
>     > Thanks,
>     > Linfeng
>     >
>     > On Thu, Feb 9, 2017 at 4:48 PM Jean-Marc Valin <jmvalin at jmvalin.ca <mailto:jmvalin at jmvalin.ca>
>     > <mailto:jmvalin at jmvalin.ca <mailto:jmvalin at jmvalin.ca>>> wrote:
>     >
>     >     Hi Linfeng,
>     >
>     >     Can you confirm that you the patch went through the same
>     internal review
>     >     (presumably from James) than the previous ones?
>     >
>     >     I had a look and did some testing and it looked good to me.
>     There's only
>     >     two issues I'd like to resolve first -- none of which directly
>     related
>     >     to your code.
>     >
>     >     1) The overflow condition is essentially untested because none
>     of the
>     >     tests in "make check" reliably triggers it. That may be a good
>     case for
>     >     an explicit unit test. IIRC, the case could be triggered by the
>     >     following input vector:
>     >     A_QA[] = { 46596096, -72118272, 78532608, -69447680, 52707328,
>     >     -22073344, -19890176, 50507776, -54829056, 45518848, -33939456,
>     >     21086208, -7127040, -4136960, 3993600, -1699840 }
>     >
>     >     2) I'm not quite sure what to make of
>     silk_LPC_inverse_pred_gain_Q24().
>     >     It seems to never be called anywhere -- except from the MIPS
>     code. Maybe
>     >     it should just stay as it is (not renamed to _c()) but I need
>     to check.
>     >     Any thoughts?
>     >
>     >     Cheers,
>     >
>     >             Jean-Marc
>     >
>     >     On 07/02/17 04:06 PM, Linfeng Zhang wrote:
>     >     > Hi,
>     >     >
>     >     > Attached is a patch with arm neon optimizations for
>     >     > silk_LPC_inverse_pred_gain(). Please review.
>     >     >
>     >     > Thanks,
>     >     > Linfeng
>     >     >
>     >     >
>     >     >
>     >     > _______________________________________________
>     >     > opus mailing list
>     >     > opus at xiph.org <mailto:opus at xiph.org> <mailto:opus at xiph.org
>     <mailto:opus at xiph.org>>
>     >     > http://lists.xiph.org/mailman/listinfo/opus
>     <http://lists.xiph.org/mailman/listinfo/opus>
>     >     >
>     >
> 
> 


More information about the opus mailing list