[PATCH] D119287: [CodeGen] Expand complex multiply and divide intrinsics for codegen.

Joshua Cranmer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 8 14:15:40 PST 2022


jcranmer-intel created this revision.
Herald added subscribers: pengfei, hiraditya, mgorny.
jcranmer-intel requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

For architectures without complex multiply or divide intrinsics (most of them),
a pass is needed to expand these intrinsics before codegen.

The tricky thing here is that where the intrinsics need to expand into a
compiler-rt helper function (e.g., __mulsc3), the ABI of complex floating point
types needs to be retrieved from the target. However, this target information
isn't fully validated for all targets, only x86.

This also adds support for lowering the complex multiple intrinsic directly to
instructions for the x86 backend.

Depends on D119286 <https://reviews.llvm.org/D119286>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D119287

Files:
  llvm/include/llvm/CodeGen/ExpandComplex.h
  llvm/include/llvm/CodeGen/ISDOpcodes.h
  llvm/include/llvm/CodeGen/Passes.h
  llvm/include/llvm/CodeGen/TargetLowering.h
  llvm/include/llvm/InitializePasses.h
  llvm/include/llvm/Target/TargetSelectionDAG.td
  llvm/lib/CodeGen/CMakeLists.txt
  llvm/lib/CodeGen/ExpandComplex.cpp
  llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
  llvm/lib/CodeGen/TargetPassConfig.cpp
  llvm/lib/Target/X86/X86ISelLowering.cpp
  llvm/lib/Target/X86/X86ISelLowering.h
  llvm/test/CodeGen/X86/O0-pipeline.ll
  llvm/test/CodeGen/X86/complex-32bit.ll
  llvm/test/CodeGen/X86/complex-64bit.ll
  llvm/test/CodeGen/X86/complex-divide.ll
  llvm/test/CodeGen/X86/complex-multiply.ll
  llvm/test/CodeGen/X86/complex-win32.ll
  llvm/test/CodeGen/X86/complex-win64.ll
  llvm/test/CodeGen/X86/fp16-complex-multiply.ll
  llvm/test/Transforms/InstCombine/complex-math.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119287.406970.patch
Type: text/x-patch
Size: 99520 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220208/f8a2ca1e/attachment-0001.bin>


More information about the llvm-commits mailing list