簡體   English   中英

llc 拋出錯誤:constexpr 需要 integer 操作數

[英]llc throws error: constexpr requires integer operands

我一直在嘗試使用 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

我不太明白這個錯誤信息,但聽起來它不能乘以浮點數? 這里發生了什么?

我認為只是您需要使用fmul來乘以浮點數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM