RV:LLVM的通用向量化框架
LLVM的通用向量化框架,以库形式提供函数向量化能力;16.x之后的版本已放弃区域向量化与rvTool。
The Region Vectorizer(RV)是LLVM的通用向量化框架,以库(libRV)形式提供对LLVM函数进行向量化的能力。README说明了历史变化:RV曾提供统一接口来向量化代码区域(内层/外层循环乃至整个函数),但16.x之后的版本放弃了其中大部分功能,也移除了曾将这些功能打包为可执行文件的rvTool。构建时需检出与目标LLVM版本对应的分支,运行git submodule update --init拉取SLEEF子模块;可选地通过在llvm/runtimes中检出compiler-rt并以-RV_ENABLE_CRT=on配置来启用向量化复数运算。库的用法可参考AnyDSL项目:其meta仓库的setup.sh从源码构建LLVM与RV,Thorin中间表示中的vectorize.cpp包含对库的实际调用,可作为集成起点。高级选项包括环境变量RV_REPORT(输出每次变换的诊断报告)和若干CMake开关:RV_ENABLE_CRT、RV_TARGETS_TO_BUILD(SLEEF向量数学库的目标列表)、RV_DEBUG、LLVM_RVPLUG_LINK_INTO_TOOLS(以插件机制链入opt/clang等工具)、RV_REBUILD_GENBC(从源码重建内置BC库)。采用Apache License v2.0 with LLVM Exceptions。