This is the mail archive of the gcc-patches@gcc.gnu.org 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]

[ARM/AARCH64] Remodel type attribute values for Neon Instructions.


Hi,

The historical neon_type attribute formed groups over the Neon
instructions which were well suited for modelling the Cortex-A8
pipeline, but were cumbersome for other processor models.

The AArch64 has another classification "simd_type". This is, with a
few exceptions, and when augmented by simd_mode, suitably high
resolution for our needs. However, this is not integrated in to the
"type" attribute, which we would ideally like to be the One True
instruction classification attribute.

This patch series aims to solve these problems by defining a new,
high resolution classification across the Neon instructions. From
this we can derive two benefits:

  * Convergence between the A32 and A64 backends.
  * Better Pipeline modeling.

The patch series first introduces the new Neon type classifications,
then updates config/arm/neon.md and config/aarch64/aarch64-simd.md
to use the new classifications.

We then update the pipeline models for the new types. For Cortex-A8
and Cortex-A9, this simply means reforming the old groups. For Cortex-A15,
this is a chance to form new groups with which we can better model the
pipeline latencies.

Finally, we can remove the old types and config/arm/neon-schedgen.ml.

The patch series has been bootstrapped on a Chromebook and the full
testsuite run with no regressions. All pipeline models have been
checked against some sample neon intrinsics code to ensure the new
schedules are sensible, and there are no holes in the pipeline models.

Thanks,
James

---
James Greenhalgh (10):
  [ARM] [1/10] Add new types to describe Neon insns.
  [AArch64] [Neon types 2/10] Update Current type attributes to new Neon
    Types.
  [ARM] [Neon types 3/10] Update Current type attributes to new Neon
    Types.
  [AArch64] [Neon types 4/10] Add type attributes to all simd insns
  [ARM] [Neon types 5/10] Update Cortex-A8 pipeline model
  [ARM] [Neon types 6/10] Cortex-A9 neon pipeline changes
  [ARM] [Neon types 7/10] Cortex-A15 neon pipeline changes
  [ARM] [Neon types 8/10] Cortex-A7 neon pipeline model
  [ARM] [Neon types 9/10] Remove old neon types
  [ARM] [Neon types 10/10] Remove neon-schedgen.ml

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