From 09b53529280fd132438d24d39dd0f1614318abfd Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Sat, 6 Aug 2016 00:06:48 -0400 Subject: Getting gcc to use cmovs rather than branches in alg_quant() Speeds up CELT encoding by around 5% on x86 --- celt/vq.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'celt/vq.c') diff --git a/celt/vq.c b/celt/vq.c index 12437167..4bc6b36f 100644 --- a/celt/vq.c +++ b/celt/vq.c @@ -185,12 +185,10 @@ unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B, ec_enc *enc, /* Get rid of the sign */ sum = 0; j=0; do { - if (X[j]>0) - signx[j]=1; - else { - signx[j]=-1; - X[j]=-X[j]; - } + /* OPT: Make sure the following two lines result in conditional moves + rather than branches. */ + signx[j] = X[j]>0 ? 1 : -1; + X[j] = ABS16(X[j]); iy[j] = 0; y[j] = 0; } while (++j