Intelが今夏発表した「APX」と「AV1」ですが、GCCやGNU Assemblerでそのパッチが多く投稿されている事がわかりました。
APXとAV10
Intel、使用可能な汎用レジスタ倍増によって性能向上を実現する「APX」を発表 ~ 再コンパイルで利用可能 - Nishiki-Hub
「APX」は、CISCの可変長命令の特徴を利用して、汎用レジスタ(GPR)の数を16から32に倍増し、コンパイラがより多くの値をレジスタに保持できるようになったものです。この技術によってロードは10%、ストアが20%以上少なくなるとしています。
このAPXのソフトウェア開発者としての対応は、APXに対応したコンパイラで改めてコンパイルすることのみと簡単に性能を向上させることができます。
Intel、PコアとEコアの両方に対応する事が可能な「AVX10」拡張命令セットを発表 ~ AVX-512を網羅した新命令 - Nishiki-Hub
AVX10は、AVX-512の実質後継となる命令で、Core系統でのみ利用可能だったAVX512の機能を、Atom系統のコアでも利用可能になる拡張命令セットです。
これによって、Intel Hybrid TechnologyでもAVX-512の機能を活用することができるようになります。
サポートが進む
Intelのエンジニアは、積極的にGCCとGNU Assembler、そしてClang等にAPXとAVX10をサポートするパッチを投稿しており、対応を進めています。
現時点でAVX10とAPXの両方ともがローンチされている状態ではありませんが、リリース後すぐに、GCCやLLVM/Clangなどで利用可能になることが期待されています。
現在、初期対応が始まっている段階であり、オプションの動作の変更はありません。AVX10については、パッチの適用によって問題が発生する場合があるものの、これはIntelがまだリリースしていない機能(AVX-512f)を用いる部分であり、レアケースだとしています。また、この動作を無効にするオプションも用意されています。
APXについては、APXでlegacy/SSE/VEX命令を使う場合に用いるREX2プレフィックスが導入されています。残りの命令についてはEVECがサポートされています。
しかし、現時点ですべての命令に対応しているわけではありません。