Karthika
2007-04-02 10:48:14 UTC
Helloo,
I am trying to compile LIBMAD for ARM7TDMI on
Metrowerks Codewarrior tool. The processor specific
options for ARM are present in the file fixed.h. I
have taken those options which are specific for ARM
and included them in a new header file called "asm.h"
( given below).I have included this "asm.h" file in my
project. Then, I have removed fixed.h from my project.
Now, when I compile my project I get the errors for
mad_f_mul and MAD_F_MLA. MAD_F_MLA error is only for
III_alias reduce( ) function. A few errors are given
below.
Error : #29: expected an expression
layer3.c line 934 return frac ?
mad_f_mul(requantized, root_table[3 + frac]) :
requantized;
Error : #18: expected a ")"
layer3.c line 1591 MAD_F_MLA(hi, lo, -b, ca[i]);
Error : #18: expected a ")"
layer3.c line 1596 MAD_F_MLA(hi, lo, a, ca[i]);
Error : #29: expected an expression
layer3.c line 1647 m0 = mad_f_mul(a17, -c3);
The "asm.h" file I have included is as follows.
# define MAD_F_SCALEBITS 28
# define MAD_F_FRACBITS 28
# define MAD_F(x) ((mad_fixed_t) (x##L))
# define MAD_F_MIN ((mad_fixed_t) -0x80000000L)
# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL)
# define MAD_F_ONE MAD_F(0x10000000)
# define mad_f_tofixed(x) ((mad_fixed_t) \
((x) * (double) (1L << MAD_F_FRACBITS) + 0.5))
# define mad_f_todouble(x) ((double) \
((x) / (double) (1L << MAD_F_FRACBITS)))
# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS)
# define mad_f_fracpart(x) ((x) & ((1L <<
MAD_F_FRACBITS) - 1))
/* (x should be positive) */
# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS)
# define mad_f_add(x, y) ((x) + (y))
# define mad_f_sub(x, y) ((x) - (y))
# define mad_f_mul(x, y) \
({ mad_fixed64hi_t __hi; \
mad_fixed64lo_t __lo; \
mad_fixed_t __result; \
asm ("smull %0, %1, %3, %4\n\t" \
"movs %0, %0, lsr %5\n\t" \
"adc %2, %0, %1, lsl %6" \
: "=&r" (__lo), "=&r" (__hi), "=r" (__result) \
: "%r" (x), "r" (y), \
"M" (MAD_F_SCALEBITS), "M" (32 -
MAD_F_SCALEBITS) \
: "cc"); \
__result; \
})
# define MAD_F_MLX(hi, lo, x, y) \
asm ("smull %0, %1, %2, %3" \
: "=&r" (lo), "=&r" (hi) \
: "%r" (x), "r" (y))
# define MAD_F_MLA(hi, lo, x, y) \
asm ("smlal %0, %1, %2, %3" \
: "+r" (lo), "+r" (hi) \
: "%r" (x), "r" (y))
# define MAD_F_MLN(hi, lo) \
asm ("rsbs %0, %2, #0\n\t" \
"rsc %1, %3, #0" \
: "=r" (lo), "=r" (hi) \
: "0" (lo), "1" (hi) \
: "cc")
# define mad_f_scale64(hi, lo) \
({ mad_fixed_t __result; \
asm ("movs %0, %1, lsr %3\n\t" \
"adc %0, %0, %2, lsl %4" \
: "=&r" (__result) \
: "r" (lo), "r" (hi), \
"M" (MAD_F_SCALEBITS), "M" (32 -
MAD_F_SCALEBITS) \
: "cc"); \
__result; \
})
mad_fixed_t mad_f_abs(mad_fixed_t);
mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t);
Can anybodu help me?
Thanks,
Karthika Lakshmi.
__________________________________________________________
Yahoo! India Answers: Share what you know. Learn something new
http://in.answers.yahoo.com/
I am trying to compile LIBMAD for ARM7TDMI on
Metrowerks Codewarrior tool. The processor specific
options for ARM are present in the file fixed.h. I
have taken those options which are specific for ARM
and included them in a new header file called "asm.h"
( given below).I have included this "asm.h" file in my
project. Then, I have removed fixed.h from my project.
Now, when I compile my project I get the errors for
mad_f_mul and MAD_F_MLA. MAD_F_MLA error is only for
III_alias reduce( ) function. A few errors are given
below.
Error : #29: expected an expression
layer3.c line 934 return frac ?
mad_f_mul(requantized, root_table[3 + frac]) :
requantized;
Error : #18: expected a ")"
layer3.c line 1591 MAD_F_MLA(hi, lo, -b, ca[i]);
Error : #18: expected a ")"
layer3.c line 1596 MAD_F_MLA(hi, lo, a, ca[i]);
Error : #29: expected an expression
layer3.c line 1647 m0 = mad_f_mul(a17, -c3);
The "asm.h" file I have included is as follows.
# define MAD_F_SCALEBITS 28
# define MAD_F_FRACBITS 28
# define MAD_F(x) ((mad_fixed_t) (x##L))
# define MAD_F_MIN ((mad_fixed_t) -0x80000000L)
# define MAD_F_MAX ((mad_fixed_t) +0x7fffffffL)
# define MAD_F_ONE MAD_F(0x10000000)
# define mad_f_tofixed(x) ((mad_fixed_t) \
((x) * (double) (1L << MAD_F_FRACBITS) + 0.5))
# define mad_f_todouble(x) ((double) \
((x) / (double) (1L << MAD_F_FRACBITS)))
# define mad_f_intpart(x) ((x) >> MAD_F_FRACBITS)
# define mad_f_fracpart(x) ((x) & ((1L <<
MAD_F_FRACBITS) - 1))
/* (x should be positive) */
# define mad_f_fromint(x) ((x) << MAD_F_FRACBITS)
# define mad_f_add(x, y) ((x) + (y))
# define mad_f_sub(x, y) ((x) - (y))
# define mad_f_mul(x, y) \
({ mad_fixed64hi_t __hi; \
mad_fixed64lo_t __lo; \
mad_fixed_t __result; \
asm ("smull %0, %1, %3, %4\n\t" \
"movs %0, %0, lsr %5\n\t" \
"adc %2, %0, %1, lsl %6" \
: "=&r" (__lo), "=&r" (__hi), "=r" (__result) \
: "%r" (x), "r" (y), \
"M" (MAD_F_SCALEBITS), "M" (32 -
MAD_F_SCALEBITS) \
: "cc"); \
__result; \
})
# define MAD_F_MLX(hi, lo, x, y) \
asm ("smull %0, %1, %2, %3" \
: "=&r" (lo), "=&r" (hi) \
: "%r" (x), "r" (y))
# define MAD_F_MLA(hi, lo, x, y) \
asm ("smlal %0, %1, %2, %3" \
: "+r" (lo), "+r" (hi) \
: "%r" (x), "r" (y))
# define MAD_F_MLN(hi, lo) \
asm ("rsbs %0, %2, #0\n\t" \
"rsc %1, %3, #0" \
: "=r" (lo), "=r" (hi) \
: "0" (lo), "1" (hi) \
: "cc")
# define mad_f_scale64(hi, lo) \
({ mad_fixed_t __result; \
asm ("movs %0, %1, lsr %3\n\t" \
"adc %0, %0, %2, lsl %4" \
: "=&r" (__result) \
: "r" (lo), "r" (hi), \
"M" (MAD_F_SCALEBITS), "M" (32 -
MAD_F_SCALEBITS) \
: "cc"); \
__result; \
})
mad_fixed_t mad_f_abs(mad_fixed_t);
mad_fixed_t mad_f_div(mad_fixed_t, mad_fixed_t);
Can anybodu help me?
Thanks,
Karthika Lakshmi.
__________________________________________________________
Yahoo! India Answers: Share what you know. Learn something new
http://in.answers.yahoo.com/