diff options
Diffstat (limited to 'apps/codecs/libwmapro')
-rw-r--r-- | apps/codecs/libwmapro/wmapro_math.h | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/apps/codecs/libwmapro/wmapro_math.h b/apps/codecs/libwmapro/wmapro_math.h index 17b4829362..54c5f45914 100644 --- a/apps/codecs/libwmapro/wmapro_math.h +++ b/apps/codecs/libwmapro/wmapro_math.h | |||
@@ -107,23 +107,8 @@ | |||
107 | : [y] "d" ((Y))); \ | 107 | : [y] "d" ((Y))); \ |
108 | x; \ | 108 | x; \ |
109 | }) | 109 | }) |
110 | |||
111 | /* Calculates: result = (X*Y)>>24 */ | ||
112 | #define fixmul24(X,Y) \ | ||
113 | ({ \ | ||
114 | int32_t t1, t2; \ | ||
115 | asm volatile ( \ | ||
116 | "mac.l %[x],%[y],%%acc0 \n\t" /* multiply */ \ | ||
117 | "move.l %%accext01, %[t1]\n\t" /* get lower 8 bits */ \ | ||
118 | "movclr.l %%acc0,%[t2] \n\t" /* get higher 24 bits */ \ | ||
119 | "asl.l #7,%[t2] \n\t" /* hi <<= 7, plus one free */ \ | ||
120 | "move.b %[t1],%[t2] \n\t" /* combine result */ \ | ||
121 | : [t1]"=&d"(t1), [t2]"=&d"(t2) \ | ||
122 | : [x] "d" ((X)), [y] "d" ((Y))); \ | ||
123 | t2; \ | ||
124 | }) | ||
125 | 110 | ||
126 | /* Calculates: result = (X*Y)>>31 (loses one bit of precision) */ | 111 | /* Calculates: result = (X*Y)>>31 (may lose msb to overflow) */ |
127 | #define fixmul31(X,Y) \ | 112 | #define fixmul31(X,Y) \ |
128 | ({ \ | 113 | ({ \ |
129 | int32_t t; \ | 114 | int32_t t; \ |