Enabling GlobalISel for Apple AArch64 platforms

I realise SelectionDAG is going to be very tricky to remove entirely, but how close is aarch64 to at least removing fast isel?

There are some features that we don’t currently support and at -O0 we go to FastISel:

  • AArch64_32 - no current plans to implement this in the near future.
  • ILP32
  • Large model code with MachO

Other platforms like Windows or Android that may have their own features that we don’t support yet, so those will need to be implemented (and tested well) before we can remove the FastISel code completely.

And how are you intending to allocate your main efforts in the future - to removing SelectionDAG entirely or chasing the last few perf regressions?

By “removing SelectionDAG” I assume you mean enabling without fallback? I see this as taking another few engineer-years, due to the long tail of features. Having the compiler abort because of an unsupported construct is not something we want to expose to users.

For the transitionary time period after enablement, we’ll be working on bugs and code size/performance regressions as the highest priority items. After that will be implementing missing features.