通过寄存器在 C++ 函数调用中返回两个 AVX/AVX2 __m256d 类型

Big*_*una 7 c++ assembly x86-64 calling-convention avx

我是使用 AVX/AVX2 指令进行编程的新手,正在尝试优化代码的速度。遵循通过引用传递更快的旧期望,我编写了代码来做到这一点,但最近更新了代码以按值传递,以利用__m256d参数将通过向量寄存器传递到函数中的事实。当函数只输出一个结果时,下面的过程似乎很清楚:

__m256d myfunc(const __m256d v1, const __m256d v2);
Run Code Online (Sandbox Code Playgroud)

AMD64 的最新System V ABI%xmm0提到了AND%xmm1可用于返回值的可能性。

所以我假设%ymm0可以%ymm1用 AVX 返回。
传回两个__m256d返回值的调用方法是什么?哪些 C++ 类型会以这种方式编译?