[PATCH, MIPS] Target flag and build option to disable indexed memory OPs.
Matthew Fortune
Matthew.Fortune@imgtec.com
Mon Jan 16 16:25:00 GMT 2017
Doug Gilmore <Doug.Gilmore@imgtec.com>
> I recently bisected PR78176 to problems introduced with r21650.
>
> Given the short time until the release, we would like to provide a
> target flag and build option to avoid the bug until we are able to
> resolve the problem with the commit. Note that as Matthew Fortune has
> mentioned in the PR:
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78176#c5
>
> the problem could also be addressed by updates to the Linux kernel since
> the problem is only exposed by running MIPS 32-bit binaries on 64-bit
> kernels.
>
> Bootstrapped on X86_64, regression tested on X86_64 and MIPS.
>
> OK to commit?
Given this is a generic reference to indexed load/store and the issue could
affect any indexed operation then I think it needs to include all of the
following as well:
/* ISA has lwxs instruction (load w/scaled index address. */
#define ISA_HAS_LWXS ((TARGET_SMARTMIPS || TARGET_MICROMIPS) \
&& !TARGET_MIPS16)
/* ISA has lbx, lbux, lhx, lhx, lhux, lwx, lwux, or ldx instruction. */
#define ISA_HAS_LBX (TARGET_OCTEON2)
#define ISA_HAS_LBUX (ISA_HAS_DSP || TARGET_OCTEON2)
#define ISA_HAS_LHX (ISA_HAS_DSP || TARGET_OCTEON2)
#define ISA_HAS_LHUX (TARGET_OCTEON2)
#define ISA_HAS_LWX (ISA_HAS_DSP || TARGET_OCTEON2)
#define ISA_HAS_LWUX (TARGET_OCTEON2 && TARGET_64BIT)
#define ISA_HAS_LDX ((ISA_HAS_DSP || TARGET_OCTEON2) \
&& TARGET_64BIT)
The DSP LBUX/LHX/LWX/LDX intrinsics will also need a new AVAIL predicate
to disable them. The snag is that some DSP code will fail to compile if it
uses the DSP load intrinsics directly.
I see no way of avoiding that. Therefore, distributions that use
--without-indexed-load-store will have to cope with some potential DSP
fallout if they enable DSP at all.
@Catherine: I'd like your input here if possible as I advocated this
approach, comments on option names welcome too. I quite like the verbose
name.
@Doug: Have you tried running the testsuite with the configure option
--without-indexed-load-store? There may be tests that need adjusting where they
test indexed load/store. We probably need a pre-processor macro
to detect if the option is enabled/disabled so that DSP code can be predicated
on indexed load being available.
Thanks,
Matthew
More information about the Gcc-patches
mailing list