[llvm] [Scalarizer][DirectX] support structs return types (PR #111569)

Mariusz Sikora via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 24 10:57:57 PDT 2024


mariusz-sikora-at-amd wrote:

Hi @farzonl I'm having problems when compiling:

```
define <3 x i32> @test_(<3 x i32> %a, <3 x i32> %b) {
  %r = call { <3 x i32>, <3 x i1> } @llvm.uadd.with.overflow.v3i32(<3 x i32> %b, <3 x i32> %b)
  %el = extractvalue { <3 x i32>, <3 x i1> } %r, 0
  ret <3 x i32> %el
}
```

```
./build/bin/opt -passes='function(scalarizer)' ./build/test_fail.ll -S
opt: ./llvm-project/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From *) [To = llvm::VectorType, From = llvm::Type]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
```

Are you planning to add `Intrinsic::uadd_with_overflow` to `ScalarizerVisitor::isTriviallyScalarizable` ?


https://github.com/llvm/llvm-project/pull/111569


More information about the llvm-commits mailing list