[PATCH] D61692: [SDAG] Vector op legalization for overflow ops

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 8 12:17:45 PDT 2019


nikic created this revision.
nikic added reviewers: RKSimon, spatel, aemerson.
Herald added subscribers: llvm-commits, hiraditya, javed.absar.
Herald added a project: LLVM.

Fixes issue reported by @aemerson on D57348 <https://reviews.llvm.org/D57348>. Vector op legalization support is added for uaddo, usubo, saddo and ssubo (umulo and smulo were already supported). As usual, by extracting TargetLowering methods and calling them from vector op legalization.

Vector op legalization doesn't really deal with multiple result nodes, so I'm explicitly performing a recursive legalization call on the result value that is not being legalized (this was also missing for the mulo case, which I've fixed as well).

There are lots of existing test changes. I haven't looked too closely at these, I think this is because expansion happens earlier, so we don't get a DAG combiner run in between anymore.


Repository:
  rL LLVM

https://reviews.llvm.org/D61692

Files:
  llvm/include/llvm/CodeGen/TargetLowering.h
  llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
  llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  llvm/test/CodeGen/AArch64/addsubo-legalization.ll
  llvm/test/CodeGen/AArch64/vec_umulo.ll
  llvm/test/CodeGen/X86/mulo-pow2.ll
  llvm/test/CodeGen/X86/sadd_sat_vec.ll
  llvm/test/CodeGen/X86/ssub_sat_vec.ll
  llvm/test/CodeGen/X86/vec_saddo.ll
  llvm/test/CodeGen/X86/vec_smulo.ll
  llvm/test/CodeGen/X86/vec_ssubo.ll
  llvm/test/CodeGen/X86/vec_umulo.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D61692.198710.patch
Type: text/x-patch
Size: 157233 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190508/57b1a96b/attachment-0001.bin>


More information about the llvm-commits mailing list