- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在this presentation Kruppe 和 Espasa 概述了 RISC-V 向量扩展 (RVV) 和 slide 16他们展示了通过内部函数使用向量指令的 LLVM IR 示例,例如:
%vl = call i32 @llvm.riscv.vsetvl(i32 8)
在谈话时(2019 年 4 月),LLVM 对 V 扩展的支持是在 https://github.com/hanna-kruppe/rvv-llvm 上开发的。 .但是,该存储库现在已存档,README 文件表明它已过时,因为现在上游开发了对 RISC-V V 扩展的支持。我假设这意味着这些功能现在可以从 LLVM master 获得,地址为 https://github.com/llvm/llvm-project .
但是,当我拉出当前的 master 并构建它并尝试使用 llc
编译示例代码时(使用 --mtriple=riscv32-unkown-none-rv32imv< 指定目标
),我收到以下错误:
error: ../llvm-project/build/bin/llc: test.ll:4:18: error: use of undefined value '@llvm.riscv.vsetvl'
似乎 V 扩展可用,因为 llc -march=riscv32 -mattr=help
列出了它:
Available features for this target:
...
experimental-v - 'V' (Vector Instructions).
我是否必须明确启用标记为实验性的目标功能?幻灯片中显示的这些矢量内在函数甚至出现在上游版本中吗?如果是,我该如何使用它们?如果不是,我该如何在 LLVM IR 中使用向量指令?
跟进:在this post Eli Friedman 解释说,目标特定的内在函数应该在 include/llvm/IR/IntrinsicsRISCV.td
中定义,实际上在 archived out-of-tree repository 中。该文件包含一些 vector-specific intrinsics the upstream version 中不存在.如果这些内在函数没有被移植到上游,那么使用 RISC-V 向量指令的正确方法是什么?
最佳答案
llvm/include/llvm/ADT/Triple.h
中只定义了两个riscv三元组: riscv32 和 riscv64。
默认 HasStdExtV
这是对应于experimental-v
的标志在 llvm/lib/Target/RISCV/RISCVSubtarget.h
中初始化为 false , 如果你想使用这个扩展你需要启用这个功能。
Clangs 似乎也支持此功能。在 clang/lib/Driver/ToolChains/Arch/RISCV.cpp
你可以看到行军支持 v
特征并生成 experimental-v
有限责任公司。
include/llvm/IR/IntrinsicsRISCV.td
中没有任何内容关于 Vector extension ,但是您可以从标准“V” Vector 中找到指令的描述分机 llvm/lib/Target/RISCV/RISCVInstrInfoV.td
. 它仍处于实验阶段。在 clang 中你也可以发现即使支持 v 扩展,在默认情况下你可以看到 // Currently LLVM supports only "mafdc".
在 clang/lib/Driver/ToolChains/Arch/RISCV.cpp
关于llvm - 如何在 LLVM IR 中使用 RISC-V 向量 (RVV) 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64099125/
在this presentation Kruppe 和 Espasa 概述了 RISC-V 向量扩展 (RVV) 和 slide 16他们展示了通过内部函数使用向量指令的 LLVM IR 示例,例如:
我是一名优秀的程序员,十分优秀!