LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。
関数コールもかなり動くようになってきて、これまでに多くのテストパタンを確認してきたのだが、リグレッションテストを作っておく必要があるように感じている。 LLVMのテストのインフラストラクチャーについて、どのようになっているのか調査した。
このあたりを見ていく。とりあえず、テスト環境を用意するためにはllvm-test-suiteを用意する必要があるらしい。
ビルドには、こちらを進めていく。
ビルドした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 ...
うーん、これはいつ終わるんだ?そして私のオリジナルアーキテクチャのテストパタンはどうやって追加したらいいんだ...?