- 2012-02-04 (Sat) 05:22
- 一般
YMMレジスタがまだ8本も余っているのにメモリに読み書きしに行ってくれる.gcc のバージョンが古いからなのか? ループ内にはAVXの命令しかないし使われている256ビット変数の数は15未満で register の修飾つけているのに…… やっぱアセンブラでちゃんとかけということなのか.
閑話休題.
ビット反転させる命令がないなぁとか思ってたけどよく考えたら NAND があるから NOT できるのね.全部 0 は自身と XOR で作るとして,全部 1 にするのは自身との同値判定でフラグを全部立てるという手法で良いのだろうか? あとは double 4つを1要素分だけローテートする方法がよくわからん.2つずらすなら128bitの permutation で良いのだけど…… なんとなく128bitの境界が頑丈でそれを超えての便利な移動が用意されていない気がする.
というかリファレンスを眺めるのも面倒だ……
追記:コンパイラが32bit用バイナリ吐いてるから ymm7 までしか使えないという制限に引っかかっているのか.cygwin も MinGW も 64bit サポートしてねぇとか何なんだ……
- Newer: ことはじめ