This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH 1/3] [ARC] Add arithmetic and logic instructions for nps


Hi,

> +#define
> MAKE_1BASED_INSERT_EXTRACT_FUNCS(NAME,SHIFT,UPPER,BITS)         \
> +static unsigned                                                         \
> +insert_nps_##NAME (unsigned insn ATTRIBUTE_UNUSED,                      \
> +                   int value ATTRIBUTE_UNUSED,                          \
> +                   const char **errmsg ATTRIBUTE_UNUSED)                \
> +{                                                                       \
> +  if (value < 0 || value > UPPER)                                       \
> +    *errmsg = _("Value must be in the range 0 to " #UPPER);             \
> +  if (value == UPPER)                                                   \
> +    value = 0;                                                          \
> +  return insn | (value << SHIFT);                                       \
> +}                                                                       \
> +                                                                        \
> +static int                                                              \
> +extract_nps_##NAME (unsigned insn ATTRIBUTE_UNUSED,                     \
> +                    bfd_boolean * invalid ATTRIBUTE_UNUSED)             \
> +{                                                                       \
> +  int value = (insn >> SHIFT) & ((1 << BITS) - 1);                      \
> +  if (value == 0)                                                       \
> +    value = UPPER;                                                      \
> +  return value;                                                         \
> +}

I am not sure if you need those two functions as the default behavior for insert and extract behaves similarly.

//Claudiu


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]