New instructions are added to AArch32 and AArch64 to aid floating-point multiplication and addition of complex numbers, where the complex numbers are packed in a vector register as a pair of elements. The Imaginary part of the number is placed in the more significant element, and the Real part of the number is placed in the less significant element.
I don't think we need 2 operand classes. They are essentially the same things, just some constants are different.
We can refactor this and the next function (and create only 1), and use "PredicateMethod" in the AsmOperand class.
We can refactor this function and the next one and create one (template/parametric) function to avoid code duplication (see earlier comment about the operand classes).
I've refactored the SIMDThreeSameVector class that is subclassed by these instructions, eliminating the need to duplicate the encodings. I've left the indexed version of the class as it is, because it is quite a bit different from the base class.
Hi Sam, many thanks for refactoring this. Looks really good now! Just 2 nits inlined, but no need for another review.
Nit: missing space after commas (also in the other predicates below)