Reply by John McDermick August 2, 20112011-08-02
Hi,

Is there a fix for this issue?   --->
http://permalink.gmane.org/gmane.comp.audio.compression.speex.devel/2959

I am seeing the same thing when I compile speex in visualdsp

These are the errors I get from using the assembly version of
vq_nbest:

..\..\..\..\algorithms\voice\speex\src\vq.c
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":482 Syntax Error in :
LOOP vq_loopR2= LC0 = P4;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":483 Syntax Error in :
LOOP_BEGIN vq_loopR2=;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":485 Syntax Error in :
LOOP_END vq_loopR2=;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":650 Syntax Error in :
LOOP entries_loopR4= LC0;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":651 Syntax Error in :
LOOP_BEGIN entries_loopR4=;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":656 Syntax Error in :
LOOP vq_loopR4= LC1 = P1;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":657 Syntax Error in :
LOOP_BEGIN vq_loopR4=;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":659 Syntax Error in :
LOOP_END vq_loopR4=;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
[Error ea5004] "C:\Users\coder\AppData\Local\Temp
\acc22e8547f000\acc22e8547f001.s":665 Syntax Error in :
LOOP_END entries_loopR4=;
syntax error is at or near text '='.
Attempting error recovery by ignoring text until the ';'
 Previous errors prevent assembly
Assembler totals: 9 error(s) and 0 warning(s)
cc3089: fatal error: Assembler failed
Tool failed with exit/exception code: 1.
Build was unsuccessful.



 void vq_nbest(i16 *in, const i16 *codebook, int len, int entries, i32
*E, int N, int *nbest, i32 *best_dist, i8 *stack)
{
if (N == 1)
{
best_dist[0] = 2147483647;
{
i32 dist;
__asm__ __volatile__
(
"LC0 = %8;\n\t"
"R2 = 0;\n\t"
"I0 = %6;\n\t"
"B0 = %6;\n\t"
"L0 = %9;\n\t"
"LOOP entries_loop%= LC0;\n\t"
"LOOP_BEGIN entries_loop%=;\n\t"
"%0 = [%4++];\n\t"
"%0 >>= 1;\n\t"
"A0 = %0;\n\t"
"R0.L = W[%1++%7] || R1.L = W[I0++];\n\t"
"LOOP vq_loop%= LC1 = %5;\n\t"
"LOOP_BEGIN vq_loop%=;\n\t"
"%0 = (A0 -= R0.L*R1.L) (IS) || R0.L = W[%1++%7] || R1.L = W[I0++];\n
\t"
"LOOP_END vq_loop%=;\n\t"
"%0 = (A0 -= R0.L*R1.L) (IS);\n\t"
"cc = %0 < %2;\n\t"
"if cc %2 = %0;\n\t"
"if cc %3 = R2;\n\t"
"R2 += 1;\n\t"
"LOOP_END entries_loop%=;\n\t"
: "=&D" (dist), "=&a" (codebook), "=&d" (best_dist[0]),
"=&d" (nbest[0]), "=&a" (E)
: "a" (len-1), "a" (in), "a" (2), "d" (entries), "d" (len<<1),
"1" (codebook), "4" (E), "2" (best_dist[0]), "3" (nbest[0])
: "R0", "R1", "R2", "I0", "L0", "B0", "A0", "cc", "memory"
);
}
}
else
{
int i, k, used;
used = 0;
for (i = 0; i < entries; i++)
{
i32 dist;
__asm__
(
"%0 >>= 1;\n\t"
"A0 = %0;\n\t"
"I0 = %3;\n\t"
"L0 = 0;\n\t"
"R0.L = W[%1++%4] || R1.L = W[I0++];\n\t"
"LOOP vq_loop%= LC0 = %2;\n\t"
"LOOP_BEGIN vq_loop%=;\n\t"
"%0 = (A0 -= R0.L*R1.L) (IS) || R0.L = W[%1++%4] || R1.L = W[I0++];\n
\t"
"LOOP_END vq_loop%=;\n\t"
"%0 = (A0 -= R0.L*R1.L) (IS);\n\t"
: "=D" (dist), "=a" (codebook)
: "a" (len-1), "a" (in), "a" (2), "1" (codebook), "0" (E[i])
: "R0", "R1", "I0", "L0", "A0"
);
if (i < N || dist < best_dist[N - 1])
{
for (k = N - 1; (k >= 1) && (k > used || dist < best_dist[k - 1]);
k--)
{
best_dist[k] = best_dist[k - 1];
nbest[k] = nbest[k - 1];
}
best_dist[k] = dist;
nbest[k] = i;
used++;
}
}
}
}