This is the mail archive of the mailing list for the GCC 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, microblaze]: Add support for swap instructions and reorder option

On 02/10/2013 10:39 PM, David Holsgrove wrote:
Add support for swap instructions and reorder option

swapb and swaph instructions are introduced in microblaze cpu (mcpu) v8.30a,
but have an undocumented dependence on -mxl-pattern-compare being set.

The conditions for their use are;

mcpu < 8.30a; no swap insns, use of -mxl-reorder produces warning
and ignored

mcpu == 8.30a and -mxl-pattern-compare specified;
and if -mno-xl-reorder not specified, then swap insns allowed

mcpu > 8.30a;
if -mno-xl-reorder not specified, then swap insns allowed


2013-02-11 David Holsgrove <>

Is this correct?

* config/microblaze/microblaze.c: microblaze_has_swap = 0 Add version check for v8.30.a to enable microblaze_has_swap * config/microblaze/microblaze.h: Add TARGET_HAS_SWAP * config/microblaze/ New bswapsi2 and bswaphi2 instructions * config/microblaze/microblaze.opt: New options -mxl-reorder and -mno-xl-reorder

Don't specify both -mxl-reorder and -mno-xl-reorder as options. Don't specify a "no" version with the RejectNegative option. GCC option handling already process the "no" prefix automatically.

There is no need to have both TARGET_REORDER and TARGET_NOREORDER
since they have exactly the same information.  Define only TARGET_REORDER.

How does the name of the option (-mxl-reorder) relate to using swap
instructions?  Nothing is being reordered.  What are "reorder" instructions?
How about -mxl-swap, similar to -mxl-pattern-compare or -mxl-float-sqrt?

+ else if (ver == 0) + { + if (!TARGET_NO_REORDER) + { + target_flags |= MASK_REORDER; + /* MicroBlaze v8.30a has an undocumented dependency on + pattern compare for swapb / swaph insns. */ + if (TARGET_PATTERN_COMPARE) + microblaze_has_swap = 1; + } + } + else + { + if (!TARGET_NO_REORDER) + { + target_flags |= MASK_REORDER; + /* Microblaze versions greater than v8.30a will be able to use + swapb / swaph without pattern compare */ + microblaze_has_swap = 1; + } + } +

Refactor to eliminate duplicated code.

Why set the MASK_REORDER flag in target_flags if this is never used?
Options processing will set this automatically since you have
  Target RejectNegative Mask(REORDER)

Michael Eager
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077

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