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
clang-format not found in user’s local PATH; not linting file.