タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

gccに関するtamuoのブックマーク (2)

  • hirax.net::mobile::gccでNEONのSIMD命令を生成させる方法

    gccでNEONのSIMD命令を生成させる方法 (PC/スマートフォン向けリンク) 「gccでNEONのSIMD命令を生成させる方法」 AndroidのSDKのgoldfishのCPUをcortex-A8に置き換えてNEONのSIMD命令を試す(その2) のときにはarm_neon.hに定義されているintrinsicsを使ってNEONのSIMD命令を生成させました。この方法だとNEONの命令について詳細を知っていなければなりませんし、なによりもそのプログラムがNEONに依存したものになってしまいます。 今回はコンパイラの最適化の機能を使ってNEONのSIMD命令を生成させるコツを紹介します。 ポイントは * 配列をループで使うこと。 * その配列のポインタに __restrict の属性がついていること。( ex. void vmla2(float* __restrict a) ) コン

    tamuo
    tamuo 2011/05/10
  • 『gccの最適化オプションでVFP/NEONを使う』

    古くからi387のようなハードウェアがあったx86とは異なりARMには最近までハードウェアで浮動小数点数を計算する仕組みがなかった。 このためARM用のgccはデフォルトで浮動小数点数の演算をソフトウェアでエミュレーションするバイナリを吐く。 かつてXScaleを積んだシャープのZaurus(通称リナザウ)にスケーラブルフォントやOgg Vorbisといった浮動小数演算を伴う処理を多用するKDE3.4を入れてみたところ動いたが実用に耐えないほど遅かった、という話があったが原因のひとつがこの浮動小数点数のエミュレーションにあったのではないかと思う。 今日のハイエンドなARMプロセッサにはVFP(ARMv6)あるいはNEON(ARMv7、VFP上位互換)といった浮動小数点数SIMD命令セットが搭載されており、浮動小数点数をハードウェアで演算することができる。 BeagleBoardはじめとする

  • 1