https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92218

            Bug ID: 92218
           Summary: PowerPC indexed insn attribute misses some insns
                    (bswap, atomic, small int float memory)
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: meissner at gcc dot gnu.org
  Target Milestone: ---

In working on the PowerPC 'future' processor, I was using the 'indexed' insn
attribute to know when a certain insn used indexed addressing instead of offset
addressing.

However it fails in one crucial case.  If the address is a single register
(i.e. indirect addressing) and the insn form requires indexed addressing, the
indexed_address_mem predicate function will fail.

Off the top of my head, the places where this happens is:
1) Load/store of 8/16/32-bit integers to/from vector/FPR registers;
2) Byte swap to/from memory; or
3) Atomic memory operations.

The simplest approach is to go into each of the problematical insns, and
explicitly set 'indexed' to 'yes' for the alternatives that require indexed
addressing.

Reply via email to