Hi, This set of patches addresses the problem with vector multiply even/odd instructions in little endian mode that I incorrectly attempted to address as part of expand_mult_highpart. (Thanks to Richard Sandiford for setting me on the right path.)
The first patch fixes the root problem wherein the "even" multiply instructions actually process odd elements in little endian mode, and vice versa. However, fixing this problem exposed several other issues, necessitating the other two patches. The second patch addresses the vector widening multiply high/low operations by swapping the input operands of the merge high and merge low instructions. Those operands are multiply-even and multiply-odd instructions, which now have reversed meanings, so swapping the operands gets us back to correct behavior. The third patch addresses two other multiplication expansions: mulv4si3 and mulv8hi3. The first needs an exception to the rule of swapping the even and odd multiply instructions, and the second again needs to swap inputs to the merge high and merge low instructions. The net effect of these three patches is to fix one failing test case, without any regressions for either endianness. Thanks, Bill