xmm4,dword ptr [r8+r11+9804h] vmovss xmm5,dword ptr [r8+r11+9808h] vmovss xmm6,dword ptr [r8+r11+980Ch] vmovss xmm7,dword ptr [r8+r11+9810h] vmovss xmm8,dword ptr [r8+r11+9814h] vmovss xmm9,dword ptr [r8+r11+9818h] vmovss xmm10,dword ptr [r8+r11+981Ch] lea edx,[r10*4] mov ecx,r14d vmovss xmm14,dword ptr [r11+rdx*4+0D800h] lea eax,[rdx+3] vmovss xmm13,dword ptr [r11+rax*4+0D800h] lea eax,[rdx+1] vmovss xmm12,dword ptr [r11+rax*4+0D800h] vmulss xmm1,xmm12,dword ptr [r8+r11+6800h] lea eax,[rdx+2] vmovss xmm11,dword ptr [r11+rax*4+0D800h] vmulss xmm0,xmm11,dword ptr [r8+r11+7800h] vaddss xmm3,xmm1,xmm0 vmulss xmm1,xmm14,dword ptr [r8+r11+5800h] vaddss xmm2,xmm1,xmm13 vmulss xmm1,xmm11,dword ptr [r8+r11+7804h] vaddss xmm0,xmm3,xmm2 vcomiss xmm0,dword ptr [r8+r11+9800h] vmulss xmm2,xmm12,dword ptr [r8+r11+6804h] vaddss xmm3,xmm2,xmm1 vxorps xmm0,xmm0,xmm0 vmovd eax,xmm15 cmovb ecx,eax mov eax,ecx スカラー演算になって命令数が画面に収まらない程に大幅に増加。 複雑になるとベクトル化を早い段階で諦めてしまう模様 vbroadcastss ymm5,dword ptr [rcx+rbx-0Ch] vbroadcastss ymm6,dword ptr [rcx+rbx] vbroadcastss ymm7,dword ptr [rcx+rbx-8] vbroadcastss ymm8,dword ptr [rcx+rbx-4] vfmadd132ps ymm5,ymm6,ymmword ptr [rsp+1C0h] vfmadd231ps ymm5,ymm7,ymmword ptr [rsp+180h] vfmadd231ps ymm5,ymm8,ymmword ptr [rsp+140h] vcmpltps ymm5,ymm5,ymmword ptr [rsp+100h] vandps ymm4,ymm5,ymm4 mov ecx,r14d vcvtsi2ss xmm0,xmm0,rax vmovss dword ptr [r8+r11+9800h],xmm0 vmulss xmm0,xmm14,dword ptr [r8+r11+5804h] vaddss xmm2,xmm0,xmm13 vaddss xmm1,xmm3,xmm2 vmulss xmm2,xmm12,dword ptr [r8+r11+6808h] vcomiss xmm4,xmm1 vmulss xmm1,xmm11,dword ptr [r8+r11+7808h] vaddss xmm3,xmm2,xmm1 vxorps xmm0,xmm0,xmm0 vpextrd eax,xmm15,1 cmova ecx,eax mov eax,ecx mov ecx,r14d vcvtsi2ss xmm0,xmm0,rax vmovss dword ptr [r8+r11+9804h],xmm0 vmulss xmm0,xmm14,dword ptr [r8+r11+5808h] vaddss xmm2,xmm0,xmm13 vaddss xmm1,xmm3,xmm2 vmulss xmm2,xmm12,dword ptr [r8+r11+680Ch] vcomiss xmm5,xmm1 vmulss xmm1,xmm11,dword ptr [r8+r11+780Ch] vaddss xmm3,xmm2,xmm1 vxorps xmm0,xmm0,xmm0 vpextrd eax,xmm15,2 : この例ではほぼ最善の最適化結果。 但し常時全てが意図する通りにベクトル化 されるとは限らない。 自動ベクトル化も万能ではないため過信は禁物。 55/64