29 int16_t *
block,
int n,
30 int qscale,
int *overflow)
32 int last_non_zero, q, start_i;
61 dc = block[0] = (block[0] + (q >> 1)) / q;
95 "r0=r1>>>15 (v); \n\t"
96 "lsetup (0f,1f) lc0=%3; \n\t"
98 " r1=abs r1 (v) || r2=[%2++];\n\t"
100 " r1=max(r1,%6) (v); \n\t"
101 " r1.h=(a1 =r1.h*r2.h), r1.l=(a0 =r1.l*r2.l) (tfu); \n\t"
103 " r0.h=(a1 =r1.h*r0.h), r0.l=(a0 =r1.l*r0.l) (is) || r1=[%1++];\n\t"
104 "1: r0=r1>>>15 (v) || [i2++]=r0;\n\t"
109 :
"b" (block),
"b" (qmat),
"a" (32),
"d" (0x00010001),
"d" (bias[0]*0x10001),
"d" (0)
110 :
"R0",
"R1",
"R2",
"I2");
111 if (start_i == 1) block[0] =
dc;
119 (
"r0=b[%1--] (x); \n\t"
120 "lsetup (0f,1f) lc0=%3; \n\t"
122 " p0=%2+(p0<<1); \n\t"
125 " if !cc jump 2f; \n\t"
126 "1: r0=b[%1--] (x); \n\t"
132 :
"=d" (last_non_zero)
133 :
"a" (scantable+63),
"a" (
block),
"a" (63),
"d" (last_non_zero)
146 return last_non_zero;