LLVMにはすでにRISC-Vのバックエンドサポートが追加されている。しかし、勉強のために独自のRISC-V実装をLLVMに追加している。
関数コールもかなり動くようになってきて、これまでに多くのテストパタンを確認してきたのだが、リグレッションテストを作っておく必要があるように感じている。 とりあえず、マニュアルにあったllvm-projectの環境とテスト環境を使用して、リファレンスのテスト環境が正しく動作することを確認しよう。 LLVM Release 7.0をターゲットに環境を構築する。
まずは、通常通りllvmのビルドを行う。この時、compiler-rtのプロジェクトもビルドするように設定しておく。compiler-rtはランタイムライブラリやパフォーマンス解析ツールのパッケージらしい。
git clone https://github.com/llvm/llvm-project.git --depth 1 -b release/7.x cd llvm-project mkdir build cd build cmake -G Ninja -DCMAKE_BUILD_TYPE="Debug" -DLLVM_TARGETS_TO_BUILD="X86;Mips" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV" -DCMAKE_ENABLE_PROJECTS="clang;compiler-rt" ../llvm cmake --build . -- -j8
次に、テストスイートをダウンロードしてビルドしてみる。
git clone https://github.com/llvm/llvm-test-suite.git test-suite -b release/7.x cmake -DCMAKE_C_COMPILER=${HOME}/llvm-project/build/bin/clang -DCMAKE_CXX_COMPILER=${HOME}/llvm-project/build/bin/clang++ -C../test-suite/cmake/caches/Debug.cmake ../test-suite cmake --build .
ビルドが完了すると、テストを実行してみる。
${HOME}/llvm-project/build/bin/llvm-lit -v -j 8 -o results.json .
909個のテストが実行された。全体としては数10分程度かかった。ただし、テストは上手くいったようだ。
size..note.ABI-tag: 32 size..plt: 32 size..rodata: 37 size..text: 1825 ********** PASS: test-suite :: SingleSource/UnitTests/Vectorizer/gcc-loops.test (909 of 909) ********** TEST 'test-suite :: SingleSource/UnitTests/Vectorizer/gcc-loops.test' RESULTS ********** compile_time: 13.9219 exec_time: 43.2344 hash: "65ff90ec20c719ac27991a4a195a56ad" link_time: 0.2344 size: 95600 size..bss: 229680 size..comment: 56 size..data: 16 size..debug_abbrev: 1420 size..debug_info: 21411 size..debug_line: 6607 size..debug_macinfo: 1 size..debug_pubnames: 5024 size..debug_pubtypes: 2576 size..debug_ranges: 2064 size..debug_str: 14964 size..dynamic: 512 size..dynsym: 576 size..eh_frame: 3336 size..eh_frame_hdr: 812 size..fini: 9 size..fini_array: 8 size..gcc_except_table: 352 size..gnu.hash: 48 size..gnu.version: 48 size..gnu.version_r: 112 size..got: 16 size..got.plt: 184 size..init: 23 size..init_array: 16 size..interp: 28 size..note.ABI-tag: 32 size..plt: 336 size..rodata: 250 size..text: 12561 ********** Testing Time: 807.45s ******************** Failing Tests (1): test-suite :: MultiSource/Applications/ClamAV/clamscan.test Expected Passes : 908 Unexpected Failures: 1