]> granicus.if.org Git - llvm/commit
[CodeGen] Handle vector UADDO, SADDO, USUBO, SSUBO
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 7 Feb 2019 21:02:22 +0000 (21:02 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 7 Feb 2019 21:02:22 +0000 (21:02 +0000)
commit37e240c2fef557b4b1b11ea0aa28ea9db848715c
tree7f7eac731c585694ef29cd61ee11d429567dd2b4
parente035747475dc32604bc1dc65399c9d66ebdce49c
[CodeGen] Handle vector UADDO, SADDO, USUBO, SSUBO

This is part of https://bugs.llvm.org/show_bug.cgi?id=40442.

Vector legalization is implemented for the add/sub overflow opcodes.
UMULO/SMULO are also handled as far as legalization is concerned, but
they don't support vector expansion yet (so no tests for them).

The vector result widening implementation is suboptimal, because it
could result in a legalization loop.

Differential Revision: https://reviews.llvm.org/D57639

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353464 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
test/CodeGen/AArch64/vec_uaddo.ll [new file with mode: 0644]
test/CodeGen/AMDGPU/saddo.ll
test/CodeGen/AMDGPU/ssubo.ll
test/CodeGen/AMDGPU/uaddo.ll
test/CodeGen/AMDGPU/usubo.ll
test/CodeGen/X86/vec_saddo.ll [new file with mode: 0644]
test/CodeGen/X86/vec_ssubo.ll [new file with mode: 0644]
test/CodeGen/X86/vec_uaddo.ll [new file with mode: 0644]
test/CodeGen/X86/vec_usubo.ll [new file with mode: 0644]