FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

オリジナルLLVM Backendを追加しよう (22. テスト環境の調査)

https://cdn-ak.f.st-hatena.com/images/fotolife/m/msyksphinz/20181123/20181123225150.png

LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。

jonathan2251.github.io

関数コールもかなり動くようになってきて、これまでに多くのテストパタンを確認してきたのだが、リグレッションテストを作っておく必要があるように感じている。 LLVMのテストのインフラストラクチャーについて、どのようになっているのか調査した。

llvm.org

このあたりを見ていく。とりあえず、テスト環境を用意するためにはllvm-test-suiteを用意する必要があるらしい。

github.com

ビルドには、こちらを進めていく。

llvm.org

ビルドしたLLVM/home/msyksphinz/work/llvm/build-myriscvx/bin/clangを使用する。

git clone https://github.com/llvm/llvm-test-suite.git test-suite
mkdir test-suite-build
cd test-suite-build
cmake -DCMAKE_C_COMPILER=/home/msyksphinz/work/llvm/build-myriscvx/bin/clang \
        -C../test-suite/cmake/caches/O3.cmake \
        ../test-suite

makeを実行する。が、これが非常に時間がかかる。手元の環境では全く終わらなかった。何個か、テストを絞る必要があるのかもしれない。

make
...
[  5%] Building CXX object Bitcode/simd_ops/CMakeFiles/simd_ops_test_op_vpsubsw_358.dir/x86_scalar_tests/scalar_test_op_vpsubsw_358.bc.o
[  5%] Linking CXX executable simd_ops_test_op_vpsubsw_358
[  5%] Built target simd_ops_test_op_vpsubsw_358
Scanning dependencies of target simd_ops_test_op_vpsubb_350
[  5%] Building CXX object Bitcode/simd_ops/CMakeFiles/simd_ops_test_op_vpsubb_350.dir/x86_halide_runtime.bc.o
...

試しに、fftと名の付いているテストのみを実行してみる。これでも、非常に時間がかかる。

make fft -j6
[  0%] Built target timeit-target
[  0%] Built target build-HashProgramOutput.sh
[  0%] Built target fpcmp
[  0%] Built target build-timeit
[  0%] Building CXX object Bitcode/Regression/fft/CMakeFiles/fft.dir/modules/FftConvolve128x128xCZHalide_x86_64_linux_avx_c_plus_plus_name_mangling_no_runtime_sse41.bc.o
[  0%] Building CXX object Bitcode/Regression/fft/CMakeFiles/fft.dir/modules/FftConvolve128x128xCZHalide_x86_64_linux_c_plus_plus_name_mangling_no_runtime.bc.o
[  0%] Building CXX object Bitcode/Regression/fft/CMakeFiles/fft.dir/modules/FftConvolve128x128xCZHalide_x86_64_linux_c_plus_plus_name_mangling_no_runtime_sse41.bc.o
[  0%] Building CXX object Bitcode/Regression/fft/CMakeFiles/fft.dir/modules/FftConvolve128x128xRHalide.bc.o
[  0%] Building CXX object Bitcode/Regression/fft/CMakeFiles/fft.dir/modules/FftConvolve128x128xRHalide_x86_64_linux_avx_avx2_c_plus_plus_name_mangling_fma_no_runtime_sse41.bc.o
[  0%] Building CXX object Bitcode/Regression/fft/CMakeFiles/fft.dir/modules/FftConvolve128x128xRHalide_x86_64_linux_avx_c_plus_plus_name_mangling_no_runtime_sse41.bc.o
...

うーん、これはいつ終わるんだ?そして私のオリジナルアーキテクチャのテストパタンはどうやって追加したらいいんだ...?