Compiling LIBMAD for ARM

View: New views
1 Messages — Rating Filter:   Alert me  

Compiling LIBMAD for ARM

by karthika-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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/