Skip to content

[WebAssembly] SIMD operations on half make llc hang #189251

@folkertdev

Description

@folkertdev

Float comparisons (at least) on half make llc hang when using simd128

https://godbolt.org/z/nd8M99bnM

define <8 x i16> @foo(<8 x half> %x) {
start:
  %1 = fcmp oeq <8 x half> %x, zeroinitializer
  %2 = sext <8 x i1> %1 to <8 x i16>
  ret <8 x i16> %2
}

this one also hangs

define <8 x i1> @compare_oeq_v8f16 (<8 x half> %x, <8 x half> %y) {
  %res = fcmp oeq <8 x half> %x, %y
  ret <8 x i1> %res
}

based on some basic debugging it might be a loop in type legalization. But I'm not really sure what's going on or how to narrow this down really.

found in rust-lang/portable-simd#513.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions