【问题标题】:How to use vector operations in RISC-V Assembly如何在 RISC-V 汇编中使用向量运算
【发布时间】:2019-02-01 11:04:00
【问题描述】:

我正在尝试利用 RISC-V 汇编中的向量操作,特别是我需要使用 arch RV64iV 或 RV64GV 编译我的源代码。 我正在使用 riscv64-unknown-elf- 工具链,具有以下参数:

riscv64-unknown-elf-gcc -o test -march=rv32iv test.s

但我收到以下错误:

汇编程序消息: 致命错误:-march=rv32iv:不支持的 ISA 子集 `v'

谢谢

【问题讨论】:

  • 尝试更新您的工具链。
  • This post about RISC-V Vector Extensions from 2018 年 9 月表示 “目前还没有使用 GCC 进行实施工作或实验”
  • @Michael:但这是否意味着没有自动矢量化或内在函数可以让 GCC 发出指令? GNU Binutils 是一个单独的项目,即使 gcc 从不发出它们,也可以实现 asm 指令。 (.s 上的gcc 只是将 asm 文件从 binutils 提供给 as-march 选项通常在仅组装而不是编译时毫无意义,但在 ARM 上对于拇指与 ARM 可能很重要......可能不是RISC-V)
  • @PeterCordes:不知道。那是我能找到的信息。我最近没有自己构建 binutils,所以我没有任何最近的源代码分发。
  • 我的评论在 OP 中得到了部分解决:他们应该尝试riscv64-unknown-elf-gcc test.s 并查看汇编程序说什么,而不是错误地输出 GCC 前端。

标签: assembly simd riscv


【解决方案1】:

截至 2019 年 2 月,没有标准的 RISC-V 矢量扩展,这意味着标准 RISC-V 工具链不支持。有各种各样的矢量扩展草案,但没有软件支持。

【讨论】:

    【解决方案2】:

    截至 2020 年初,RISC-V 矢量扩展“V”规范为 0.8 版,仍处于草案状态。

    但是,有可用的 GNU gcc/binutils 的“V”端口,并且 Spike RISC-V 模拟器也支持“V”0.8。 README of the "V" spec links to the relevant branches

    我最近发表了 some notes 关于如何开始 RISC-V "V" 0.8 开发的文章,例如如何构建正确的工具链、相关组件、组装、编译“V”代码以及如何使用 Spike 对其进行测试。

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 2021-08-02
      • 2023-04-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 2016-03-14
      • 2023-04-10
      相关资源
      最近更新 更多