如何解决如何在C中使用多SIMD寄存器
我想使用多个 ymm 寄存器来加快复制速度。这是我的代码片段。
__m256 ymm[2];
ymm[0] = _mm256_load_ps(_src1);
ymm[1] = _mm256_load_ps(_src2);
_mm256_store_ps(_dst1,ymm[0]);
_mm256_store_ps(_dst2,ymm[1]);
但是visual studio的反汇编结果显示我只使用了ymm0寄存器,实际上我想使用更多的寄存器,比如ymm1、ymm2。有什么方法可以指定或给编译器一些提示吗?
__m256 ymm[2];
ymm[0] = _mm256_load_ps(_src1);
00007FF6E417EFA9 mov rax,qword ptr [rbp+10h]
00007FF6E417EFAD vmovups ymm0,ymmword ptr [rax]
00007FF6E417EFB1 vmovups ymmword ptr [rbp+0A0h],ymm0
00007FF6E417EFB9 mov eax,20h
00007FF6E417EFBE imul rax,rax,0
00007FF6E417EFC2 vmovups ymm0,ymmword ptr [rbp+0A0h]
00007FF6E417EFCA vmovups ymmword ptr [rbp+rax+40h],ymm0
ymm[1] = _mm256_load_ps(_src2);
00007FF6E417EFD0 mov rax,qword ptr [rbp+18h]
00007FF6E417EFD4 vmovups ymm0,ymmword ptr [rax]
00007FF6E417EFD8 vmovups ymmword ptr [rbp+0C0h],ymm0
00007FF6E417EFE0 mov eax,20h
00007FF6E417EFE5 imul rax,1
00007FF6E417EFE9 vmovups ymm0,ymmword ptr [rbp+0C0h]
00007FF6E417EFF1 vmovups ymmword ptr [rbp+rax+40h],ymm0
_mm256_store_ps(_dst1,ymm[0]);
00007FF6E417EFF7 mov eax,20h
00007FF6E417EFFC imul rax,0
00007FF6E417F000 mov rcx,qword ptr [rbp+20h]
00007FF6E417F004 vmovups ymm0,ymmword ptr [rbp+rax+40h]
00007FF6E417F00A vmovups ymmword ptr [rcx],ymm0
_mm256_store_ps(_dst2,ymm[1]);
00007FF6E417F00E mov eax,20h
00007FF6E417F013 imul rax,1
00007FF6E417F017 mov rcx,qword ptr [rbp+28h]
00007FF6E417F01B vmovups ymm0,ymmword ptr [rbp+rax+40h]
00007FF6E417F021 vmovups ymmword ptr [rcx],ymm0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。