LLVMのバックエンドのaarch64とarm64の違い
Linaroのtoolchainのチームは週報をMLで公開しています。それを見ていたらLLVMのバックエンドのaarch64とarm64の違いについてとても簡潔な説明があったので紹介します。
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の時点で両者のマージは完了しています。