2012年10月09日
GCCのベクタライザに言う事をきかせられない
- 2012-10-09 (Tue)
- 一般
ほんのちょっと外側に単純なループを追加しただけで mulps とかが mulss とかになってしまう.中でやっている変換の仕様を見たほうがはやいかなとか思い始めた.
あとはレジスタ余ってるのに直前に読んだメモリをレジスタに置いとくとかしてくれないのね…… そのオフセットの値はひとつ前のイテレーションで読んでるじゃん,とか文句を言いながらどうしたもんかと1日悩む.結局解決法はわからん.Expression templates で計算式を持ってきているので手動で register と叫ぶことができず,コンパイラに頑張ってもらうしかないのだけど…… ああ,マイナス方向のインデックスへのアクセスを拾ってきて明示的にキャッシュしておいた値を返すように式を変換してしまえばいいのか.問題はそれをやったとしてベクタライザがうまく動いてくれるかだな.
コンパイラに言う事をきかせるのは難しい.
- Comments: 0
- TrackBack (Close): -