llc引发错误:constexpr需要整数操作数

问题描述 投票:0回答:1

我一直在尝试使用llvm进行代码生成。我目前正在尝试为变量声明生成IR。这是一个例子:

let sum: float = 8 * 3 * 4 + 6 * 9;

当我为此生成IR时,这就是我得到的:

  %sum = alloca float
  %sum1 = alloca float
  %sum2 = alloca float
  store float mul (float 8.000000e+00, float 3.000000e+00), float* %sum2
  %sum3 = load float, float* %sum2
  %sum4 = alloca float
  %sum5 = mul float %sum3, 4.000000e+00
  store float %sum5, float* %sum4
  %sum6 = load float, float* %sum4
  store float %sum6, float* %sum
  %sum_loaded = load float, float* %sum
  %sum7 = alloca float
  %sum8 = alloca float
  store float mul (float 6.000000e+00, float 9.000000e+00), float* %sum8
  %sum9 = load float, float* %sum8
  store float %sum9, float* %sum
  %sum_loaded10 = load float, float* %sum

首先,这看起来很凌乱,我确信可以更有效地完成此操作。但我认为以后可以通过优化来解决。我的问题是在测试中查看是否有效。我尝试过:

llc my_ir

哪个抛出:

llc: error: llc: my_ir:4:15: error: constexpr requires integer operands
  store float mul (float 8.000000e+00, float 3.000000e+00), float* %sum2

我不是很理解这个错误消息,但是听起来好像它不能乘以浮点数?这是怎么回事?

llvm llvm-ir llc
1个回答
0
投票

我认为这只是您需要使用fmul乘以浮点数。

© www.soinside.com 2019 - 2024. All rights reserved.