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: MIPS JAL/JALR to BAL transformation for Linux (o32 ABI)


Adam Nemet wrote:
Fu, Chao-Ying writes:
+/* True if ABFD is for CPUs that are faster if jal/jalr is
converted to bal.
+ This should be safe for all architectures, but for now
we enable it
+ for RM9000, mips32, mips32r2, mips64, and mips64r2. */
+#define JAL_JALR_TO_BAL_P(abfd) \
+ ( ((elf_elfheader (abfd)->e_flags & EF_MIPS_MACH) ==
E_MIPS_MACH_9000) \
+ || ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) ==
E_MIPS_ARCH_32) \
+ || ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) ==
E_MIPS_ARCH_32R2) \
+ || ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) ==
E_MIPS_ARCH_64) \
+ || ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) ==
E_MIPS_ARCH_64R2))

I think this should be a negative predicate.  As you say JALR->BAL
should be a profitable transformation on most CPUs.
  Yes.  If everyone is ok, we can just set JAL_JALR_TO_BAL_P(abfd) to 1.
(And, fix new test failures due to BAL mismatching.)

Just to be sure, what I said applies to JALR->BAL for Octeon. JAL->BAL is not necessarily profitable on Octeon but I thought the relaxation code was performing JALR->BAL or JALR->JAL and not JAL->BAL? Am I missing something here?


In -fPIC code we would want JALR -> BAL, one would hope that JAL would not be emitted with -fPIC. It probably varies on a per CPU basis whether or not JAL or BAL is preferable, but if the branch range is exceeded you would probably want to fall back to JAL.


David Daney


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