This is the mail archive of the binutils@sources.redhat.com 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: support for extensa mul16, fp, etc ?


Sorry for the slow response -- I just got back from a vacation.

The problem here is that the code in CVS cannot possibly support all potential Xtensa processor configurations. Besides allowing users to add optional packages like the FPU, multiplier, etc., Tensilica allows users to define custom instructions, so there fundamentally has to be some configuration-specific files. GCC will not generate code that uses arbitrary custom instructions, so it only needs the xtensa-config.h header to indicate which of the optional predefined packages should be used. Binutils, in contrast, needs to know how to encode and decode arbitrary instructions. The code to do that is in the Xtensa configuration-specific bfd/xtensa-modules.c file. If you want binutils to support the mul16 and fp options, you'll need a version of xtensa-modules.c that includes those options. If you already have that code, just replace the default version and you'll be all set.

When I contributed the Xtensa port of binutils, I somewhat arbitrarily picked an Xtensa configuration that did not include those options. I think you have a good point that since GCC can generate these instructions, it would be good if the binutils code in CVS could handle them as well. I will change the default Xtensa configuration to include all the instructions supported by GCC. That will also improve testing coverage for these optional Xtensa packages.

Unfortunately, I'm not prepared to make this change right now. I'm in the middle of a big project to update the Xtensa port of binutils to support the upcoming Xtensa LX release, and I don't want to perturb things any more than I have to until that is done. (I'm also putting off switching the Xtensa files to ISO C90 until I finish merging the Xtensa LX changes.) If you need a solution soon and you don't already have a suitable version of the xtensa-modules.c file, let me know what you need and I'll see if I can help you find a temporary workaround.

--Bob


Nick Clifton wrote:
Hi Greg,

[I am including Bob Wilson, the official binutils Xtensa maintainer on the To: line - Hi Bob!]

Does binutils-2.15, with the xtensa target, have support for the 'optional' instruction
sets, e.f. mul16 option, fpu option, etc?


It does not appear so. :-( I have checked the sources and although macros like XCHAL_HAVE_MUL16 and XCHAL_HAVE_FP are defined, they are not used anywhere. This applies to both the 2.15 sources and the current binutils sources in the CVS repository.

Because gcc-3.4.1 does .. and my gcc build is
failing due to the assembler not recognizing
the 'mul16u' instruction.


I hope that this is just a temporary snafu and that someone soon will be contributing code to binutils to add support for these instructions...


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