この質問はPower8 in-core crypto patchにありました。このパッチは、Power8ビルトインを使用してAESを提供します。 VSXレジスタをロードするときは、リトルエンディアンマシンで実行するときに128ビットのエンディアン反転を実行して、VSXレジスタが適切な値をロードするようにする必要があります。組み込み関数を使用して実行時にmsr.leをチェックする方法は?
コンパイル時に、__BYTE_ORDER__
のようなマクロをチェックすることができます。しかし、実行時にマシンステータスレジスタをチェックするはずです。 msr.le=1
の場合は、エンディアンスワップを実行します。また、AltiVec Programming Environment Manual、セクション3.1.4、p。も参照してください。 3-5。
ビルトインを使用して実行時にマシンステータスレジスタを確認するにはどうすればよいですか?
ありがとう@Jeremy。コンパイル時にチェックするだけです。実行時に確認する必要はありません。あれは正しいですか? – jww
はい、正確です。すでに見つかったように、 '__BYTE_ORDER__'を使用してください。 LEビットが逆エンディアンに設定されていると、エンディアンをチェックするためのコードを実行することはできません:) –
Ack、ありがとう。私は命令にも 'msr [le]'が適用されていることに気づいていませんでした。もし私がそれを知っていたら、おそらく最初の質問をしなかったでしょう: – jww