【问题标题】:llvm undefined experimental intrinsicsllvm 未定义的实验内在函数
【发布时间】:2020-09-02 23:32:52
【问题描述】:

我正在尝试编辑 llvm ir 代码:

define { double, double } @add(double, double, double, double) local_unnamed_addr #0 {
  %5 = call double @llvm.experimental.constrained.fadd(double %0, double %2, metadata !"round.downward", metadata !"fpexcept.ignore")
  %6 = fadd double %1, %3
  %7 = insertvalue { double, double } undef, double %5, 0
  %8 = insertvalue { double, double } %7, double %6, 1
  ret { double, double } %8
}

在第 2 行使用来自 llvm 的实验性内在函数,可以找到该文档here

使用 llvm-as 编译 llvm 代码时,出现错误:

use of undefined value '@llvm.experimental.constrained.fadd'

我用来编译成二进制的代码是:

/usr/local/opt/llvm/bin/llvm-as interval.ll -o interval.bc

为了使用实验性内在函数,我需要添加任何特殊标志吗?

【问题讨论】:

    标签: c llvm


    【解决方案1】:

    @llvm.experimental.constrained.fadd 更改为@llvm.experimental.constrained.fadd.f64 并添加声明declare double @llvm.experimental.constrained.fadd.f64(double, double, metadata, metadata)

    【讨论】:

    • 你好,后来我发现问题实际上是文件中没有声明函数。
    【解决方案2】:

    问题是,对于 llvm 中使用的每个函数,您都需要在文件中的某处声明它。

    【讨论】:

      猜你喜欢
      • 2020-03-20
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 2012-08-17
      相关资源
      最近更新 更多