This patch adds four new tests for upcoming functionality in LLVM:
- complex-deinterleaving-add-mull-fixed-contract.ll
- complex-deinterleaving-add-mull-scalable-contract.ll
- complex-deinterleaving-add-mull-fixed-fast.ll
- complex-deinterleaving-add-mull-scalable-fast.ll.
These tests were generated from the IR of vectorizable loops, which were
compiled from C++ code using different optimization flags in Clang. Each pair
of tests corresponds to Neon and SVE architectures, respectively, and
each pair contains tests compiled with -Ofast and -O3 -ffp-contract=fast
-ffinite-math-only optimization flags.
The tests were stripped of nnan and ninf flags as they have no impact on the
output.
The primary objective of these tests is to show the various sequences of
complex computations that may be encountered and to demonstrate the ability
of ComplexDeinterleaving to support any ordering.
Depends on D147451
maybe worth to add a comment explaining why the input IR in this and other files you add here looks like that?
I also noticed that this file and complex-deinterleaving-add-mull-scalable-contract.ll is not modified in the follow up patch, so maybe worth to explain it in the commit message, why.