llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
26.7k stars 10.94k forks source link

roundeven support for arm32 #73588

Open vksnk opened 7 months ago

vksnk commented 7 months ago

We've run into this issue in one of the Halide tests with the following error:

LLVM ERROR: Cannot select: t8: v4f32 = froundeven nnan ninf nsz contract afn reassoc t7

Isolated test case:

target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "arm--linux-gnueabihf"

declare <4 x float> @llvm.roundeven.v4f32(<4 x float>)
declare ptr @blah(<4 x float>)

define void @foo() {
entry:
  %v0 = tail call reassoc nnan ninf nsz contract afn <4 x float> @llvm.roundeven.v4f32(<4 x float> poison)
  %out = tail call ptr @blah(<4 x float> %v0)
  ret void
}
llvmbot commented 7 months ago

@llvm/issue-subscribers-backend-arm

Author: Volodymyr Kysenko (vksnk)

We've run into this issue in one of the Halide tests with the following error: ``` LLVM ERROR: Cannot select: t8: v4f32 = froundeven nnan ninf nsz contract afn reassoc t7 ``` Isolated test case: ``` target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" target triple = "arm--linux-gnueabihf" declare <4 x float> @llvm.roundeven.v4f32(<4 x float>) declare ptr @blah(<4 x float>) define void @foo() { entry: %v0 = tail call reassoc nnan ninf nsz contract afn <4 x float> @llvm.roundeven.v4f32(<4 x float> poison) %out = tail call ptr @blah(<4 x float> %v0) ret void } ```