追記06/09

http://int.main.jp/files/waifu2x-converter_x64_staticgcc.exe

本家のブロック分割をマージした。大きいファイルでも動くはず。

その影響でちょっと遅くなったのでそれをリカバーするためにOpenCVごとGCCでビルドしなおした。

960x540 でブロック分割しないと10.6[sec]、512x512のブロック分割ありで11.3[sec]ぐらい。


VCは、

v00 = MADD<have_fma>(_mm256_loadu_ps(&w[0*VEC_WIDTH]), i00, v00);
v01 = MADD<have_fma>(_mm256_loadu_ps(&w[0*VEC_WIDTH]), i01, v01);

v00 = MADD<have_fma>(_mm256_loadu_ps(&w[1*VEC_WIDTH]), i01, v00);
v01 = MADD<have_fma>(_mm256_loadu_ps(&w[1*VEC_WIDTH]), i02, v01);

v00 = MADD<have_fma>(_mm256_loadu_ps(&w[2*VEC_WIDTH]), i02, v00);
v01 = MADD<have_fma>(_mm256_loadu_ps(&w[2*VEC_WIDTH]), i03, v01);

こういうコードで _mm256_loadu_ps(&w[X*VEC_WIDTH]) のロードをスケジューリングしてしまって、レジスタスピルする悲しいコードを出していた。(GCCは想定どおりレジスタ14個使うコードを出していた)


32bit版はOpenCVビルド面倒なのでちょっと待って。欲しい人いるなら連絡もらえればやる気出てやると思う。