LLVMのバックエンドのaarch64とarm64の違い

Linaroのtoolchainのチームは週報をMLで公開しています。それを見ていたらLLVMのバックエンドのaarch64とarm64の違いについてとても簡潔な説明があったので紹介します。

[ACTIVITY] Week 17

LLVMのAArch64とARM64の比較のテストをしていると週報を書いたRenatoさんに質問が入ります。

> AArch64とARM64って何?LLVM特有のものかい?

その通り。それらは2つの異なるAArch64のバックエンドで、ひとつの公式なものにマージする作業が今進行している。
AArch64はARMのTimによって作られたもので、機能は全部揃っている。一方、ARM64はAppleによって(iOS 64用に)作られたもので、去年までは非公開だった。でも最近LLVMのアップストリームにコントリビュートされたんだ。
ARM64バックエンドは少しパフォーマンスがよかった。(実機で長期間テストされたものだったからね。)でも足りない機能があった。足りない機能を付け加えるのはパフォーマンスの問題よりも簡単なので、ARM64をベースにしてAArch64をマージして、それを新たにAArch64に改名するという決断が下されたんだ。

少し混乱するけど、でも2つの独立した(片方はオープンでもう片方はクローズの)バックエンドがあるよりもみんなにとっていいことだ。

僕のテストで、性能は機能のリグレッションが無いことが確認できた。ARMとAppleはそれぞれ同様のテストをしている。

ということです。

追記

LLVM v3.5の時点で両者のマージは完了しています。