gitee.com/quant1x/gox@v1.7.6/num/asm/_avx2/distance.s (about)

     1  Dot_F64_D(double*, double*, unsigned long):                      # @Dot_F64_D(double*, double*, unsigned long)
     2          testq   %rdx, %rdx
     3          je      .LBB0_1
     4          cmpq    $16, %rdx
     5          jae     .LBB0_4
     6          vxorpd  %xmm0, %xmm0, %xmm0
     7          xorl    %eax, %eax
     8          jmp     .LBB0_7
     9  .LBB0_1:
    10          vxorps  %xmm0, %xmm0, %xmm0
    11          retq
    12  .LBB0_4:
    13          movq    %rdx, %rax
    14          andq    $-16, %rax
    15          vxorpd  %xmm0, %xmm0, %xmm0
    16          xorl    %ecx, %ecx
    17          vxorpd  %xmm1, %xmm1, %xmm1
    18          vxorpd  %xmm2, %xmm2, %xmm2
    19          vxorpd  %xmm3, %xmm3, %xmm3
    20  .LBB0_5:                                # =>This Inner Loop Header: Depth=1
    21          vmovupd (%rsi,%rcx,8), %ymm4
    22          vmovupd 32(%rsi,%rcx,8), %ymm5
    23          vmovupd 64(%rsi,%rcx,8), %ymm6
    24          vmovupd 96(%rsi,%rcx,8), %ymm7
    25          vfmadd231pd     (%rdi,%rcx,8), %ymm4, %ymm0 # ymm0 = (ymm4 * mem) + ymm0
    26          vfmadd231pd     32(%rdi,%rcx,8), %ymm5, %ymm1 # ymm1 = (ymm5 * mem) + ymm1
    27          vfmadd231pd     64(%rdi,%rcx,8), %ymm6, %ymm2 # ymm2 = (ymm6 * mem) + ymm2
    28          vfmadd231pd     96(%rdi,%rcx,8), %ymm7, %ymm3 # ymm3 = (ymm7 * mem) + ymm3
    29          addq    $16, %rcx
    30          cmpq    %rcx, %rax
    31          jne     .LBB0_5
    32          vaddpd  %ymm0, %ymm1, %ymm0
    33          vaddpd  %ymm0, %ymm2, %ymm0
    34          vaddpd  %ymm0, %ymm3, %ymm0
    35          vextractf128    $1, %ymm0, %xmm1
    36          vaddpd  %xmm1, %xmm0, %xmm0
    37          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
    38          vaddsd  %xmm1, %xmm0, %xmm0
    39          cmpq    %rdx, %rax
    40          je      .LBB0_8
    41  .LBB0_7:                                # =>This Inner Loop Header: Depth=1
    42          vmovsd  (%rsi,%rax,8), %xmm1            # xmm1 = mem[0],zero
    43          vfmadd231sd     (%rdi,%rax,8), %xmm1, %xmm0 # xmm0 = (xmm1 * mem) + xmm0
    44          addq    $1, %rax
    45          cmpq    %rax, %rdx
    46          jne     .LBB0_7
    47  .LBB0_8:
    48          vzeroupper
    49          retq
    50  Dot_F32_F(float*, float*, unsigned long):                      # @Dot_F32_F(float*, float*, unsigned long)
    51          testq   %rdx, %rdx
    52          je      .LBB1_1
    53          cmpq    $32, %rdx
    54          jae     .LBB1_4
    55          vxorps  %xmm0, %xmm0, %xmm0
    56          xorl    %eax, %eax
    57          jmp     .LBB1_7
    58  .LBB1_1:
    59          vxorps  %xmm0, %xmm0, %xmm0
    60          retq
    61  .LBB1_4:
    62          movq    %rdx, %rax
    63          andq    $-32, %rax
    64          vxorps  %xmm0, %xmm0, %xmm0
    65          xorl    %ecx, %ecx
    66          vxorps  %xmm1, %xmm1, %xmm1
    67          vxorps  %xmm2, %xmm2, %xmm2
    68          vxorps  %xmm3, %xmm3, %xmm3
    69  .LBB1_5:                                # =>This Inner Loop Header: Depth=1
    70          vmovups (%rsi,%rcx,4), %ymm4
    71          vmovups 32(%rsi,%rcx,4), %ymm5
    72          vmovups 64(%rsi,%rcx,4), %ymm6
    73          vmovups 96(%rsi,%rcx,4), %ymm7
    74          vfmadd231ps     (%rdi,%rcx,4), %ymm4, %ymm0 # ymm0 = (ymm4 * mem) + ymm0
    75          vfmadd231ps     32(%rdi,%rcx,4), %ymm5, %ymm1 # ymm1 = (ymm5 * mem) + ymm1
    76          vfmadd231ps     64(%rdi,%rcx,4), %ymm6, %ymm2 # ymm2 = (ymm6 * mem) + ymm2
    77          vfmadd231ps     96(%rdi,%rcx,4), %ymm7, %ymm3 # ymm3 = (ymm7 * mem) + ymm3
    78          addq    $32, %rcx
    79          cmpq    %rcx, %rax
    80          jne     .LBB1_5
    81          vaddps  %ymm0, %ymm1, %ymm0
    82          vaddps  %ymm0, %ymm2, %ymm0
    83          vaddps  %ymm0, %ymm3, %ymm0
    84          vextractf128    $1, %ymm0, %xmm1
    85          vaddps  %xmm1, %xmm0, %xmm0
    86          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
    87          vaddps  %xmm1, %xmm0, %xmm0
    88          vmovshdup       %xmm0, %xmm1            # xmm1 = xmm0[1,1,3,3]
    89          vaddss  %xmm1, %xmm0, %xmm0
    90          cmpq    %rdx, %rax
    91          je      .LBB1_8
    92  .LBB1_7:                                # =>This Inner Loop Header: Depth=1
    93          vmovss  (%rsi,%rax,4), %xmm1            # xmm1 = mem[0],zero,zero,zero
    94          vfmadd231ss     (%rdi,%rax,4), %xmm1, %xmm0 # xmm0 = (xmm1 * mem) + xmm0
    95          addq    $1, %rax
    96          cmpq    %rax, %rdx
    97          jne     .LBB1_7
    98  .LBB1_8:
    99          vzeroupper
   100          retq
   101  CosineSimilarity_F64_D(double*, double*, unsigned long):        # @CosineSimilarity_F64_D(double*, double*, unsigned long)
   102          testq   %rdx, %rdx
   103          je      .LBB2_1
   104          cmpq    $8, %rdx
   105          jae     .LBB2_5
   106          vxorpd  %xmm1, %xmm1, %xmm1
   107          xorl    %eax, %eax
   108          vxorpd  %xmm2, %xmm2, %xmm2
   109          vxorpd  %xmm0, %xmm0, %xmm0
   110          jmp     .LBB2_4
   111  .LBB2_1:
   112          vxorpd  %xmm0, %xmm0, %xmm0
   113          vxorpd  %xmm1, %xmm1, %xmm1
   114          vsqrtsd %xmm1, %xmm1, %xmm1
   115          vdivsd  %xmm1, %xmm0, %xmm0
   116          retq
   117  .LBB2_5:
   118          movq    %rdx, %rax
   119          andq    $-8, %rax
   120          vxorpd  %xmm1, %xmm1, %xmm1
   121          xorl    %ecx, %ecx
   122          vxorpd  %xmm3, %xmm3, %xmm3
   123          vxorpd  %xmm2, %xmm2, %xmm2
   124          vxorpd  %xmm4, %xmm4, %xmm4
   125          vxorpd  %xmm0, %xmm0, %xmm0
   126          vxorpd  %xmm5, %xmm5, %xmm5
   127  .LBB2_6:                                # =>This Inner Loop Header: Depth=1
   128          vmovupd (%rdi,%rcx,8), %ymm6
   129          vmovupd 32(%rdi,%rcx,8), %ymm7
   130          vmovupd (%rsi,%rcx,8), %ymm8
   131          vmovupd 32(%rsi,%rcx,8), %ymm9
   132          vfmadd231pd     %ymm6, %ymm8, %ymm0     # ymm0 = (ymm8 * ymm6) + ymm0
   133          vfmadd231pd     %ymm7, %ymm9, %ymm5     # ymm5 = (ymm9 * ymm7) + ymm5
   134          vfmadd231pd     %ymm6, %ymm6, %ymm2     # ymm2 = (ymm6 * ymm6) + ymm2
   135          vfmadd231pd     %ymm7, %ymm7, %ymm4     # ymm4 = (ymm7 * ymm7) + ymm4
   136          vfmadd231pd     %ymm8, %ymm8, %ymm1     # ymm1 = (ymm8 * ymm8) + ymm1
   137          vfmadd231pd     %ymm9, %ymm9, %ymm3     # ymm3 = (ymm9 * ymm9) + ymm3
   138          addq    $8, %rcx
   139          cmpq    %rcx, %rax
   140          jne     .LBB2_6
   141          vaddpd  %ymm0, %ymm5, %ymm0
   142          vextractf128    $1, %ymm0, %xmm5
   143          vaddpd  %xmm5, %xmm0, %xmm0
   144          vpermilpd       $1, %xmm0, %xmm5        # xmm5 = xmm0[1,0]
   145          vaddsd  %xmm5, %xmm0, %xmm0
   146          vaddpd  %ymm2, %ymm4, %ymm2
   147          vextractf128    $1, %ymm2, %xmm4
   148          vaddpd  %xmm4, %xmm2, %xmm2
   149          vpermilpd       $1, %xmm2, %xmm4        # xmm4 = xmm2[1,0]
   150          vaddsd  %xmm4, %xmm2, %xmm2
   151          vaddpd  %ymm1, %ymm3, %ymm1
   152          vextractf128    $1, %ymm1, %xmm3
   153          vaddpd  %xmm3, %xmm1, %xmm1
   154          vpermilpd       $1, %xmm1, %xmm3        # xmm3 = xmm1[1,0]
   155          vaddsd  %xmm3, %xmm1, %xmm1
   156          cmpq    %rdx, %rax
   157          je      .LBB2_8
   158  .LBB2_4:                                # =>This Inner Loop Header: Depth=1
   159          vmovsd  (%rdi,%rax,8), %xmm3            # xmm3 = mem[0],zero
   160          vmovsd  (%rsi,%rax,8), %xmm4            # xmm4 = mem[0],zero
   161          vfmadd231sd     %xmm3, %xmm4, %xmm0     # xmm0 = (xmm4 * xmm3) + xmm0
   162          vfmadd231sd     %xmm3, %xmm3, %xmm2     # xmm2 = (xmm3 * xmm3) + xmm2
   163          vfmadd231sd     %xmm4, %xmm4, %xmm1     # xmm1 = (xmm4 * xmm4) + xmm1
   164          addq    $1, %rax
   165          cmpq    %rax, %rdx
   166          jne     .LBB2_4
   167  .LBB2_8:
   168          vmulsd  %xmm2, %xmm1, %xmm1
   169          vsqrtsd %xmm1, %xmm1, %xmm1
   170          vdivsd  %xmm1, %xmm0, %xmm0
   171          vzeroupper
   172          retq
   173  .LCPI3_0:
   174          .long   0xc0400000                      # float -3
   175  .LCPI3_1:
   176          .long   0xbf000000                      # float -0.5
   177  CosineSimilarity_F32_F(float*, float*, unsigned long):        # @CosineSimilarity_F32_F(float*, float*, unsigned long)
   178          testq   %rdx, %rdx
   179          je      .LBB3_1
   180          cmpq    $16, %rdx
   181          jae     .LBB3_5
   182          vxorps  %xmm1, %xmm1, %xmm1
   183          xorl    %eax, %eax
   184          vxorps  %xmm2, %xmm2, %xmm2
   185          vxorps  %xmm0, %xmm0, %xmm0
   186          jmp     .LBB3_4
   187  .LBB3_1:
   188          vxorps  %xmm0, %xmm0, %xmm0
   189          vxorps  %xmm1, %xmm1, %xmm1
   190          jmp     .LBB3_9
   191  .LBB3_5:
   192          movq    %rdx, %rax
   193          andq    $-16, %rax
   194          vxorps  %xmm1, %xmm1, %xmm1
   195          xorl    %ecx, %ecx
   196          vxorps  %xmm3, %xmm3, %xmm3
   197          vxorps  %xmm2, %xmm2, %xmm2
   198          vxorps  %xmm4, %xmm4, %xmm4
   199          vxorps  %xmm0, %xmm0, %xmm0
   200          vxorps  %xmm5, %xmm5, %xmm5
   201  .LBB3_6:                                # =>This Inner Loop Header: Depth=1
   202          vmovups (%rdi,%rcx,4), %ymm6
   203          vmovups 32(%rdi,%rcx,4), %ymm7
   204          vmovups (%rsi,%rcx,4), %ymm8
   205          vmovups 32(%rsi,%rcx,4), %ymm9
   206          vfmadd231ps     %ymm6, %ymm8, %ymm0     # ymm0 = (ymm8 * ymm6) + ymm0
   207          vfmadd231ps     %ymm7, %ymm9, %ymm5     # ymm5 = (ymm9 * ymm7) + ymm5
   208          vfmadd231ps     %ymm6, %ymm6, %ymm2     # ymm2 = (ymm6 * ymm6) + ymm2
   209          vfmadd231ps     %ymm7, %ymm7, %ymm4     # ymm4 = (ymm7 * ymm7) + ymm4
   210          vfmadd231ps     %ymm8, %ymm8, %ymm1     # ymm1 = (ymm8 * ymm8) + ymm1
   211          vfmadd231ps     %ymm9, %ymm9, %ymm3     # ymm3 = (ymm9 * ymm9) + ymm3
   212          addq    $16, %rcx
   213          cmpq    %rcx, %rax
   214          jne     .LBB3_6
   215          vaddps  %ymm0, %ymm5, %ymm0
   216          vextractf128    $1, %ymm0, %xmm5
   217          vaddps  %xmm5, %xmm0, %xmm0
   218          vpermilpd       $1, %xmm0, %xmm5        # xmm5 = xmm0[1,0]
   219          vaddps  %xmm5, %xmm0, %xmm0
   220          vmovshdup       %xmm0, %xmm5            # xmm5 = xmm0[1,1,3,3]
   221          vaddss  %xmm5, %xmm0, %xmm0
   222          vaddps  %ymm2, %ymm4, %ymm2
   223          vextractf128    $1, %ymm2, %xmm4
   224          vaddps  %xmm4, %xmm2, %xmm2
   225          vpermilpd       $1, %xmm2, %xmm4        # xmm4 = xmm2[1,0]
   226          vaddps  %xmm4, %xmm2, %xmm2
   227          vmovshdup       %xmm2, %xmm4            # xmm4 = xmm2[1,1,3,3]
   228          vaddss  %xmm4, %xmm2, %xmm2
   229          vaddps  %ymm1, %ymm3, %ymm1
   230          vextractf128    $1, %ymm1, %xmm3
   231          vaddps  %xmm3, %xmm1, %xmm1
   232          vpermilpd       $1, %xmm1, %xmm3        # xmm3 = xmm1[1,0]
   233          vaddps  %xmm3, %xmm1, %xmm1
   234          vmovshdup       %xmm1, %xmm3            # xmm3 = xmm1[1,1,3,3]
   235          vaddss  %xmm3, %xmm1, %xmm1
   236          cmpq    %rdx, %rax
   237          je      .LBB3_8
   238  .LBB3_4:                                # =>This Inner Loop Header: Depth=1
   239          vmovss  (%rdi,%rax,4), %xmm3            # xmm3 = mem[0],zero,zero,zero
   240          vmovss  (%rsi,%rax,4), %xmm4            # xmm4 = mem[0],zero,zero,zero
   241          vfmadd231ss     %xmm3, %xmm4, %xmm0     # xmm0 = (xmm4 * xmm3) + xmm0
   242          vfmadd231ss     %xmm3, %xmm3, %xmm2     # xmm2 = (xmm3 * xmm3) + xmm2
   243          vfmadd231ss     %xmm4, %xmm4, %xmm1     # xmm1 = (xmm4 * xmm4) + xmm1
   244          addq    $1, %rax
   245          cmpq    %rax, %rdx
   246          jne     .LBB3_4
   247  .LBB3_8:
   248          vmulss  %xmm2, %xmm1, %xmm1
   249  .LBB3_9:
   250          vrsqrtss        %xmm1, %xmm1, %xmm2
   251          vmulss  %xmm2, %xmm1, %xmm1
   252          vfmadd213ss     .LCPI3_0(%rip), %xmm2, %xmm1 # xmm1 = (xmm2 * xmm1) + mem
   253          vmulss  .LCPI3_1(%rip), %xmm2, %xmm2
   254          vmulss  %xmm0, %xmm2, %xmm0
   255          vmulss  %xmm0, %xmm1, %xmm0
   256          vzeroupper
   257          retq
   258  Norm_F64_D(double*, unsigned long):             # @Norm_F64_D(double*, unsigned long)
   259          testq   %rsi, %rsi
   260          je      .LBB4_1
   261          cmpq    $16, %rsi
   262          jae     .LBB4_4
   263          vxorpd  %xmm0, %xmm0, %xmm0
   264          xorl    %eax, %eax
   265          jmp     .LBB4_11
   266  .LBB4_1:
   267          vxorpd  %xmm0, %xmm0, %xmm0
   268          vsqrtsd %xmm0, %xmm0, %xmm0
   269          retq
   270  .LBB4_4:
   271          movq    %rsi, %rax
   272          andq    $-16, %rax
   273          leaq    -16(%rax), %rcx
   274          movq    %rcx, %r8
   275          shrq    $4, %r8
   276          addq    $1, %r8
   277          testq   %rcx, %rcx
   278          je      .LBB4_5
   279          movq    %r8, %rcx
   280          andq    $-2, %rcx
   281          vxorpd  %xmm0, %xmm0, %xmm0
   282          xorl    %edx, %edx
   283          vxorpd  %xmm1, %xmm1, %xmm1
   284          vxorpd  %xmm2, %xmm2, %xmm2
   285          vxorpd  %xmm3, %xmm3, %xmm3
   286  .LBB4_7:                                # =>This Inner Loop Header: Depth=1
   287          vmovupd (%rdi,%rdx,8), %ymm4
   288          vmovupd 32(%rdi,%rdx,8), %ymm5
   289          vmovupd 64(%rdi,%rdx,8), %ymm6
   290          vmovupd 96(%rdi,%rdx,8), %ymm7
   291          vfmadd213pd     %ymm0, %ymm4, %ymm4     # ymm4 = (ymm4 * ymm4) + ymm0
   292          vfmadd213pd     %ymm1, %ymm5, %ymm5     # ymm5 = (ymm5 * ymm5) + ymm1
   293          vfmadd213pd     %ymm2, %ymm6, %ymm6     # ymm6 = (ymm6 * ymm6) + ymm2
   294          vfmadd213pd     %ymm3, %ymm7, %ymm7     # ymm7 = (ymm7 * ymm7) + ymm3
   295          vmovupd 128(%rdi,%rdx,8), %ymm0
   296          vmovupd 160(%rdi,%rdx,8), %ymm1
   297          vmovupd 192(%rdi,%rdx,8), %ymm2
   298          vmovupd 224(%rdi,%rdx,8), %ymm3
   299          vfmadd213pd     %ymm4, %ymm0, %ymm0     # ymm0 = (ymm0 * ymm0) + ymm4
   300          vfmadd213pd     %ymm5, %ymm1, %ymm1     # ymm1 = (ymm1 * ymm1) + ymm5
   301          vfmadd213pd     %ymm6, %ymm2, %ymm2     # ymm2 = (ymm2 * ymm2) + ymm6
   302          vfmadd213pd     %ymm7, %ymm3, %ymm3     # ymm3 = (ymm3 * ymm3) + ymm7
   303          addq    $32, %rdx
   304          addq    $-2, %rcx
   305          jne     .LBB4_7
   306          testb   $1, %r8b
   307          je      .LBB4_10
   308  .LBB4_9:
   309          vmovupd (%rdi,%rdx,8), %ymm4
   310          vmovupd 32(%rdi,%rdx,8), %ymm5
   311          vmovupd 64(%rdi,%rdx,8), %ymm6
   312          vmovupd 96(%rdi,%rdx,8), %ymm7
   313          vfmadd231pd     %ymm4, %ymm4, %ymm0     # ymm0 = (ymm4 * ymm4) + ymm0
   314          vfmadd231pd     %ymm5, %ymm5, %ymm1     # ymm1 = (ymm5 * ymm5) + ymm1
   315          vfmadd231pd     %ymm6, %ymm6, %ymm2     # ymm2 = (ymm6 * ymm6) + ymm2
   316          vfmadd231pd     %ymm7, %ymm7, %ymm3     # ymm3 = (ymm7 * ymm7) + ymm3
   317  .LBB4_10:
   318          vaddpd  %ymm3, %ymm1, %ymm1
   319          vaddpd  %ymm2, %ymm0, %ymm0
   320          vaddpd  %ymm1, %ymm0, %ymm0
   321          vextractf128    $1, %ymm0, %xmm1
   322          vaddpd  %xmm1, %xmm0, %xmm0
   323          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   324          vaddsd  %xmm1, %xmm0, %xmm0
   325          cmpq    %rsi, %rax
   326          je      .LBB4_12
   327  .LBB4_11:                               # =>This Inner Loop Header: Depth=1
   328          vmovsd  (%rdi,%rax,8), %xmm1            # xmm1 = mem[0],zero
   329          vfmadd231sd     %xmm1, %xmm1, %xmm0     # xmm0 = (xmm1 * xmm1) + xmm0
   330          addq    $1, %rax
   331          cmpq    %rax, %rsi
   332          jne     .LBB4_11
   333  .LBB4_12:
   334          vsqrtsd %xmm0, %xmm0, %xmm0
   335          vzeroupper
   336          retq
   337  .LBB4_5:
   338          vxorpd  %xmm0, %xmm0, %xmm0
   339          xorl    %edx, %edx
   340          vxorpd  %xmm1, %xmm1, %xmm1
   341          vxorpd  %xmm2, %xmm2, %xmm2
   342          vxorpd  %xmm3, %xmm3, %xmm3
   343          testb   $1, %r8b
   344          jne     .LBB4_9
   345          jmp     .LBB4_10
   346  .LCPI5_0:
   347          .long   0xc0400000                      # float -3
   348  .LCPI5_1:
   349          .long   0xbf000000                      # float -0.5
   350  .LCPI5_2:
   351          .long   0x7fffffff                      # float NaN
   352  .LCPI5_3:
   353          .long   0x00800000                      # float 1.17549435E-38
   354  Norm_F32_F(float*, unsigned long):             # @Norm_F32_F(float*, unsigned long)
   355          testq   %rsi, %rsi
   356          je      .LBB5_1
   357          cmpq    $32, %rsi
   358          jae     .LBB5_4
   359          vxorps  %xmm0, %xmm0, %xmm0
   360          xorl    %eax, %eax
   361          jmp     .LBB5_11
   362  .LBB5_1:
   363          vxorps  %xmm0, %xmm0, %xmm0
   364          jmp     .LBB5_12
   365  .LBB5_4:
   366          movq    %rsi, %rax
   367          andq    $-32, %rax
   368          leaq    -32(%rax), %rcx
   369          movq    %rcx, %r8
   370          shrq    $5, %r8
   371          addq    $1, %r8
   372          testq   %rcx, %rcx
   373          je      .LBB5_5
   374          movq    %r8, %rcx
   375          andq    $-2, %rcx
   376          vxorps  %xmm0, %xmm0, %xmm0
   377          xorl    %edx, %edx
   378          vxorps  %xmm1, %xmm1, %xmm1
   379          vxorps  %xmm2, %xmm2, %xmm2
   380          vxorps  %xmm3, %xmm3, %xmm3
   381  .LBB5_7:                                # =>This Inner Loop Header: Depth=1
   382          vmovups (%rdi,%rdx,4), %ymm4
   383          vmovups 32(%rdi,%rdx,4), %ymm5
   384          vmovups 64(%rdi,%rdx,4), %ymm6
   385          vmovups 96(%rdi,%rdx,4), %ymm7
   386          vfmadd213ps     %ymm0, %ymm4, %ymm4     # ymm4 = (ymm4 * ymm4) + ymm0
   387          vfmadd213ps     %ymm1, %ymm5, %ymm5     # ymm5 = (ymm5 * ymm5) + ymm1
   388          vfmadd213ps     %ymm2, %ymm6, %ymm6     # ymm6 = (ymm6 * ymm6) + ymm2
   389          vfmadd213ps     %ymm3, %ymm7, %ymm7     # ymm7 = (ymm7 * ymm7) + ymm3
   390          vmovups 128(%rdi,%rdx,4), %ymm0
   391          vmovups 160(%rdi,%rdx,4), %ymm1
   392          vmovups 192(%rdi,%rdx,4), %ymm2
   393          vmovups 224(%rdi,%rdx,4), %ymm3
   394          vfmadd213ps     %ymm4, %ymm0, %ymm0     # ymm0 = (ymm0 * ymm0) + ymm4
   395          vfmadd213ps     %ymm5, %ymm1, %ymm1     # ymm1 = (ymm1 * ymm1) + ymm5
   396          vfmadd213ps     %ymm6, %ymm2, %ymm2     # ymm2 = (ymm2 * ymm2) + ymm6
   397          vfmadd213ps     %ymm7, %ymm3, %ymm3     # ymm3 = (ymm3 * ymm3) + ymm7
   398          addq    $64, %rdx
   399          addq    $-2, %rcx
   400          jne     .LBB5_7
   401          testb   $1, %r8b
   402          je      .LBB5_10
   403  .LBB5_9:
   404          vmovups (%rdi,%rdx,4), %ymm4
   405          vmovups 32(%rdi,%rdx,4), %ymm5
   406          vmovups 64(%rdi,%rdx,4), %ymm6
   407          vmovups 96(%rdi,%rdx,4), %ymm7
   408          vfmadd231ps     %ymm4, %ymm4, %ymm0     # ymm0 = (ymm4 * ymm4) + ymm0
   409          vfmadd231ps     %ymm5, %ymm5, %ymm1     # ymm1 = (ymm5 * ymm5) + ymm1
   410          vfmadd231ps     %ymm6, %ymm6, %ymm2     # ymm2 = (ymm6 * ymm6) + ymm2
   411          vfmadd231ps     %ymm7, %ymm7, %ymm3     # ymm3 = (ymm7 * ymm7) + ymm3
   412  .LBB5_10:
   413          vaddps  %ymm3, %ymm1, %ymm1
   414          vaddps  %ymm2, %ymm0, %ymm0
   415          vaddps  %ymm1, %ymm0, %ymm0
   416          vextractf128    $1, %ymm0, %xmm1
   417          vaddps  %xmm1, %xmm0, %xmm0
   418          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   419          vaddps  %xmm1, %xmm0, %xmm0
   420          vmovshdup       %xmm0, %xmm1            # xmm1 = xmm0[1,1,3,3]
   421          vaddss  %xmm1, %xmm0, %xmm0
   422          cmpq    %rsi, %rax
   423          je      .LBB5_12
   424  .LBB5_11:                               # =>This Inner Loop Header: Depth=1
   425          vmovss  (%rdi,%rax,4), %xmm1            # xmm1 = mem[0],zero,zero,zero
   426          vfmadd231ss     %xmm1, %xmm1, %xmm0     # xmm0 = (xmm1 * xmm1) + xmm0
   427          addq    $1, %rax
   428          cmpq    %rax, %rsi
   429          jne     .LBB5_11
   430  .LBB5_12:
   431          vrsqrtss        %xmm0, %xmm0, %xmm1
   432          vmulss  %xmm1, %xmm0, %xmm2
   433          vfmadd213ss     .LCPI5_0(%rip), %xmm2, %xmm1 # xmm1 = (xmm2 * xmm1) + mem
   434          vmulss  .LCPI5_1(%rip), %xmm2, %xmm2
   435          vmulss  %xmm1, %xmm2, %xmm1
   436          vbroadcastss    .LCPI5_2(%rip), %xmm2   # xmm2 = [NaN,NaN,NaN,NaN]
   437          vandps  %xmm2, %xmm0, %xmm0
   438          vcmpltss        .LCPI5_3(%rip), %xmm0, %xmm0
   439          vandnps %xmm1, %xmm0, %xmm0
   440          vzeroupper
   441          retq
   442  .LBB5_5:
   443          vxorps  %xmm0, %xmm0, %xmm0
   444          xorl    %edx, %edx
   445          vxorps  %xmm1, %xmm1, %xmm1
   446          vxorps  %xmm2, %xmm2, %xmm2
   447          vxorps  %xmm3, %xmm3, %xmm3
   448          testb   $1, %r8b
   449          jne     .LBB5_9
   450          jmp     .LBB5_10
   451  Distance_F64_D(double*, double*, unsigned long):       # @Distance_F64_D(double*, double*, unsigned long)
   452          testq   %rdx, %rdx
   453          je      .LBB6_1
   454          cmpq    $16, %rdx
   455          jae     .LBB6_4
   456          vxorpd  %xmm0, %xmm0, %xmm0
   457          xorl    %eax, %eax
   458          jmp     .LBB6_7
   459  .LBB6_1:
   460          vxorpd  %xmm0, %xmm0, %xmm0
   461          vsqrtsd %xmm0, %xmm0, %xmm0
   462          retq
   463  .LBB6_4:
   464          movq    %rdx, %rax
   465          andq    $-16, %rax
   466          vxorpd  %xmm0, %xmm0, %xmm0
   467          xorl    %ecx, %ecx
   468          vxorpd  %xmm1, %xmm1, %xmm1
   469          vxorpd  %xmm2, %xmm2, %xmm2
   470          vxorpd  %xmm3, %xmm3, %xmm3
   471  .LBB6_5:                                # =>This Inner Loop Header: Depth=1
   472          vmovupd (%rdi,%rcx,8), %ymm4
   473          vmovupd 32(%rdi,%rcx,8), %ymm5
   474          vmovupd 64(%rdi,%rcx,8), %ymm6
   475          vmovupd 96(%rdi,%rcx,8), %ymm7
   476          vsubpd  (%rsi,%rcx,8), %ymm4, %ymm4
   477          vsubpd  32(%rsi,%rcx,8), %ymm5, %ymm5
   478          vsubpd  64(%rsi,%rcx,8), %ymm6, %ymm6
   479          vsubpd  96(%rsi,%rcx,8), %ymm7, %ymm7
   480          vfmadd231pd     %ymm4, %ymm4, %ymm0     # ymm0 = (ymm4 * ymm4) + ymm0
   481          vfmadd231pd     %ymm5, %ymm5, %ymm1     # ymm1 = (ymm5 * ymm5) + ymm1
   482          vfmadd231pd     %ymm6, %ymm6, %ymm2     # ymm2 = (ymm6 * ymm6) + ymm2
   483          vfmadd231pd     %ymm7, %ymm7, %ymm3     # ymm3 = (ymm7 * ymm7) + ymm3
   484          addq    $16, %rcx
   485          cmpq    %rcx, %rax
   486          jne     .LBB6_5
   487          vaddpd  %ymm0, %ymm1, %ymm0
   488          vaddpd  %ymm0, %ymm2, %ymm0
   489          vaddpd  %ymm0, %ymm3, %ymm0
   490          vextractf128    $1, %ymm0, %xmm1
   491          vaddpd  %xmm1, %xmm0, %xmm0
   492          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   493          vaddsd  %xmm1, %xmm0, %xmm0
   494          cmpq    %rdx, %rax
   495          je      .LBB6_8
   496  .LBB6_7:                                # =>This Inner Loop Header: Depth=1
   497          vmovsd  (%rdi,%rax,8), %xmm1            # xmm1 = mem[0],zero
   498          vsubsd  (%rsi,%rax,8), %xmm1, %xmm1
   499          vfmadd231sd     %xmm1, %xmm1, %xmm0     # xmm0 = (xmm1 * xmm1) + xmm0
   500          addq    $1, %rax
   501          cmpq    %rax, %rdx
   502          jne     .LBB6_7
   503  .LBB6_8:
   504          vsqrtsd %xmm0, %xmm0, %xmm0
   505          vzeroupper
   506          retq
   507  .LCPI7_0:
   508          .long   0xc0400000                      # float -3
   509  .LCPI7_1:
   510          .long   0xbf000000                      # float -0.5
   511  .LCPI7_2:
   512          .long   0x7fffffff                      # float NaN
   513  .LCPI7_3:
   514          .long   0x00800000                      # float 1.17549435E-38
   515  Distance_F32_F(float*, float*, unsigned long):        # @Distance_F32_F(float*, float*, unsigned long)
   516          testq   %rdx, %rdx
   517          je      .LBB7_1
   518          cmpq    $32, %rdx
   519          jae     .LBB7_4
   520          vxorps  %xmm0, %xmm0, %xmm0
   521          xorl    %eax, %eax
   522          jmp     .LBB7_7
   523  .LBB7_1:
   524          vxorps  %xmm0, %xmm0, %xmm0
   525          jmp     .LBB7_8
   526  .LBB7_4:
   527          movq    %rdx, %rax
   528          andq    $-32, %rax
   529          vxorps  %xmm0, %xmm0, %xmm0
   530          xorl    %ecx, %ecx
   531          vxorps  %xmm1, %xmm1, %xmm1
   532          vxorps  %xmm2, %xmm2, %xmm2
   533          vxorps  %xmm3, %xmm3, %xmm3
   534  .LBB7_5:                                # =>This Inner Loop Header: Depth=1
   535          vmovups (%rdi,%rcx,4), %ymm4
   536          vmovups 32(%rdi,%rcx,4), %ymm5
   537          vmovups 64(%rdi,%rcx,4), %ymm6
   538          vmovups 96(%rdi,%rcx,4), %ymm7
   539          vsubps  (%rsi,%rcx,4), %ymm4, %ymm4
   540          vsubps  32(%rsi,%rcx,4), %ymm5, %ymm5
   541          vsubps  64(%rsi,%rcx,4), %ymm6, %ymm6
   542          vsubps  96(%rsi,%rcx,4), %ymm7, %ymm7
   543          vfmadd231ps     %ymm4, %ymm4, %ymm0     # ymm0 = (ymm4 * ymm4) + ymm0
   544          vfmadd231ps     %ymm5, %ymm5, %ymm1     # ymm1 = (ymm5 * ymm5) + ymm1
   545          vfmadd231ps     %ymm6, %ymm6, %ymm2     # ymm2 = (ymm6 * ymm6) + ymm2
   546          vfmadd231ps     %ymm7, %ymm7, %ymm3     # ymm3 = (ymm7 * ymm7) + ymm3
   547          addq    $32, %rcx
   548          cmpq    %rcx, %rax
   549          jne     .LBB7_5
   550          vaddps  %ymm0, %ymm1, %ymm0
   551          vaddps  %ymm0, %ymm2, %ymm0
   552          vaddps  %ymm0, %ymm3, %ymm0
   553          vextractf128    $1, %ymm0, %xmm1
   554          vaddps  %xmm1, %xmm0, %xmm0
   555          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   556          vaddps  %xmm1, %xmm0, %xmm0
   557          vmovshdup       %xmm0, %xmm1            # xmm1 = xmm0[1,1,3,3]
   558          vaddss  %xmm1, %xmm0, %xmm0
   559          cmpq    %rdx, %rax
   560          je      .LBB7_8
   561  .LBB7_7:                                # =>This Inner Loop Header: Depth=1
   562          vmovss  (%rdi,%rax,4), %xmm1            # xmm1 = mem[0],zero,zero,zero
   563          vsubss  (%rsi,%rax,4), %xmm1, %xmm1
   564          vfmadd231ss     %xmm1, %xmm1, %xmm0     # xmm0 = (xmm1 * xmm1) + xmm0
   565          addq    $1, %rax
   566          cmpq    %rax, %rdx
   567          jne     .LBB7_7
   568  .LBB7_8:
   569          vrsqrtss        %xmm0, %xmm0, %xmm1
   570          vmulss  %xmm1, %xmm0, %xmm2
   571          vfmadd213ss     .LCPI7_0(%rip), %xmm2, %xmm1 # xmm1 = (xmm2 * xmm1) + mem
   572          vmulss  .LCPI7_1(%rip), %xmm2, %xmm2
   573          vmulss  %xmm1, %xmm2, %xmm1
   574          vbroadcastss    .LCPI7_2(%rip), %xmm2   # xmm2 = [NaN,NaN,NaN,NaN]
   575          vandps  %xmm2, %xmm0, %xmm0
   576          vcmpltss        .LCPI7_3(%rip), %xmm0, %xmm0
   577          vandnps %xmm1, %xmm0, %xmm0
   578          vzeroupper
   579          retq
   580  .LCPI8_0:
   581          .quad   0x7fffffffffffffff              # double NaN
   582  .LCPI8_1:
   583          .quad   0x7fffffffffffffff              # double NaN
   584          .quad   0x7fffffffffffffff              # double NaN
   585  ManhattanNorm_F64_D(double*, unsigned long):             # @ManhattanNorm_F64_D(double*, unsigned long)
   586          testq   %rsi, %rsi
   587          je      .LBB8_1
   588          cmpq    $16, %rsi
   589          jae     .LBB8_4
   590          vxorpd  %xmm0, %xmm0, %xmm0
   591          xorl    %eax, %eax
   592          jmp     .LBB8_7
   593  .LBB8_1:
   594          vxorps  %xmm0, %xmm0, %xmm0
   595          retq
   596  .LBB8_4:
   597          movq    %rsi, %rax
   598          andq    $-16, %rax
   599          vxorpd  %xmm0, %xmm0, %xmm0
   600          vbroadcastsd    .LCPI8_0(%rip), %ymm1   # ymm1 = [NaN,NaN,NaN,NaN]
   601          xorl    %ecx, %ecx
   602          vxorpd  %xmm2, %xmm2, %xmm2
   603          vxorpd  %xmm3, %xmm3, %xmm3
   604          vxorpd  %xmm4, %xmm4, %xmm4
   605  .LBB8_5:                                # =>This Inner Loop Header: Depth=1
   606          vandpd  (%rdi,%rcx,8), %ymm1, %ymm5
   607          vaddpd  %ymm0, %ymm5, %ymm0
   608          vandpd  32(%rdi,%rcx,8), %ymm1, %ymm5
   609          vaddpd  %ymm2, %ymm5, %ymm2
   610          vandpd  64(%rdi,%rcx,8), %ymm1, %ymm5
   611          vandpd  96(%rdi,%rcx,8), %ymm1, %ymm6
   612          vaddpd  %ymm3, %ymm5, %ymm3
   613          vaddpd  %ymm4, %ymm6, %ymm4
   614          addq    $16, %rcx
   615          cmpq    %rcx, %rax
   616          jne     .LBB8_5
   617          vaddpd  %ymm0, %ymm2, %ymm0
   618          vaddpd  %ymm0, %ymm3, %ymm0
   619          vaddpd  %ymm0, %ymm4, %ymm0
   620          vextractf128    $1, %ymm0, %xmm1
   621          vaddpd  %xmm1, %xmm0, %xmm0
   622          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   623          vaddsd  %xmm1, %xmm0, %xmm0
   624          cmpq    %rsi, %rax
   625          je      .LBB8_9
   626  .LBB8_7:
   627          vmovapd .LCPI8_1(%rip), %xmm1           # xmm1 = [NaN,NaN]
   628  .LBB8_8:                                # =>This Inner Loop Header: Depth=1
   629          vmovsd  (%rdi,%rax,8), %xmm2            # xmm2 = mem[0],zero
   630          vandpd  %xmm1, %xmm2, %xmm2
   631          vaddsd  %xmm0, %xmm2, %xmm0
   632          addq    $1, %rax
   633          cmpq    %rax, %rsi
   634          jne     .LBB8_8
   635  .LBB8_9:
   636          vzeroupper
   637          retq
   638  .LCPI9_0:
   639          .long   0x7fffffff                      # float NaN
   640  ManhattanNorm_F32_F(float*, unsigned long):             # @ManhattanNorm_F32_F(float*, unsigned long)
   641          testq   %rsi, %rsi
   642          je      .LBB9_1
   643          cmpq    $32, %rsi
   644          jae     .LBB9_4
   645          vxorps  %xmm0, %xmm0, %xmm0
   646          xorl    %eax, %eax
   647          jmp     .LBB9_7
   648  .LBB9_1:
   649          vxorps  %xmm0, %xmm0, %xmm0
   650          retq
   651  .LBB9_4:
   652          movq    %rsi, %rax
   653          andq    $-32, %rax
   654          vxorps  %xmm0, %xmm0, %xmm0
   655          vbroadcastss    .LCPI9_0(%rip), %ymm1   # ymm1 = [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]
   656          xorl    %ecx, %ecx
   657          vxorps  %xmm2, %xmm2, %xmm2
   658          vxorps  %xmm3, %xmm3, %xmm3
   659          vxorps  %xmm4, %xmm4, %xmm4
   660  .LBB9_5:                                # =>This Inner Loop Header: Depth=1
   661          vandps  (%rdi,%rcx,4), %ymm1, %ymm5
   662          vaddps  %ymm0, %ymm5, %ymm0
   663          vandps  32(%rdi,%rcx,4), %ymm1, %ymm5
   664          vaddps  %ymm2, %ymm5, %ymm2
   665          vandps  64(%rdi,%rcx,4), %ymm1, %ymm5
   666          vandps  96(%rdi,%rcx,4), %ymm1, %ymm6
   667          vaddps  %ymm3, %ymm5, %ymm3
   668          vaddps  %ymm4, %ymm6, %ymm4
   669          addq    $32, %rcx
   670          cmpq    %rcx, %rax
   671          jne     .LBB9_5
   672          vaddps  %ymm0, %ymm2, %ymm0
   673          vaddps  %ymm0, %ymm3, %ymm0
   674          vaddps  %ymm0, %ymm4, %ymm0
   675          vextractf128    $1, %ymm0, %xmm1
   676          vaddps  %xmm1, %xmm0, %xmm0
   677          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   678          vaddps  %xmm1, %xmm0, %xmm0
   679          vmovshdup       %xmm0, %xmm1            # xmm1 = xmm0[1,1,3,3]
   680          vaddss  %xmm1, %xmm0, %xmm0
   681          cmpq    %rsi, %rax
   682          je      .LBB9_9
   683  .LBB9_7:
   684          vbroadcastss    .LCPI9_0(%rip), %xmm1   # xmm1 = [NaN,NaN,NaN,NaN]
   685  .LBB9_8:                                # =>This Inner Loop Header: Depth=1
   686          vmovss  (%rdi,%rax,4), %xmm2            # xmm2 = mem[0],zero,zero,zero
   687          vandps  %xmm1, %xmm2, %xmm2
   688          vaddss  %xmm0, %xmm2, %xmm0
   689          addq    $1, %rax
   690          cmpq    %rax, %rsi
   691          jne     .LBB9_8
   692  .LBB9_9:
   693          vzeroupper
   694          retq
   695  .LCPI10_0:
   696          .quad   0x7fffffffffffffff              # double NaN
   697  .LCPI10_1:
   698          .quad   0x7fffffffffffffff              # double NaN
   699          .quad   0x7fffffffffffffff              # double NaN
   700  ManhattanDistance_F64_D(double*, double*, unsigned long):       # @ManhattanDistance_F64_D(double*, double*, unsigned long)
   701          testq   %rdx, %rdx
   702          je      .LBB10_1
   703          cmpq    $16, %rdx
   704          jae     .LBB10_4
   705          vxorpd  %xmm0, %xmm0, %xmm0
   706          xorl    %eax, %eax
   707          jmp     .LBB10_7
   708  .LBB10_1:
   709          vxorps  %xmm0, %xmm0, %xmm0
   710          retq
   711  .LBB10_4:
   712          movq    %rdx, %rax
   713          andq    $-16, %rax
   714          vxorpd  %xmm0, %xmm0, %xmm0
   715          vbroadcastsd    .LCPI10_0(%rip), %ymm1  # ymm1 = [NaN,NaN,NaN,NaN]
   716          xorl    %ecx, %ecx
   717          vxorpd  %xmm2, %xmm2, %xmm2
   718          vxorpd  %xmm3, %xmm3, %xmm3
   719          vxorpd  %xmm4, %xmm4, %xmm4
   720  .LBB10_5:                               # =>This Inner Loop Header: Depth=1
   721          vmovupd (%rdi,%rcx,8), %ymm5
   722          vmovupd 32(%rdi,%rcx,8), %ymm6
   723          vmovupd 64(%rdi,%rcx,8), %ymm7
   724          vmovupd 96(%rdi,%rcx,8), %ymm8
   725          vsubpd  (%rsi,%rcx,8), %ymm5, %ymm5
   726          vsubpd  32(%rsi,%rcx,8), %ymm6, %ymm6
   727          vsubpd  64(%rsi,%rcx,8), %ymm7, %ymm7
   728          vsubpd  96(%rsi,%rcx,8), %ymm8, %ymm8
   729          vandpd  %ymm1, %ymm5, %ymm5
   730          vaddpd  %ymm0, %ymm5, %ymm0
   731          vandpd  %ymm1, %ymm6, %ymm5
   732          vaddpd  %ymm2, %ymm5, %ymm2
   733          vandpd  %ymm1, %ymm7, %ymm5
   734          vaddpd  %ymm3, %ymm5, %ymm3
   735          vandpd  %ymm1, %ymm8, %ymm5
   736          vaddpd  %ymm4, %ymm5, %ymm4
   737          addq    $16, %rcx
   738          cmpq    %rcx, %rax
   739          jne     .LBB10_5
   740          vaddpd  %ymm0, %ymm2, %ymm0
   741          vaddpd  %ymm0, %ymm3, %ymm0
   742          vaddpd  %ymm0, %ymm4, %ymm0
   743          vextractf128    $1, %ymm0, %xmm1
   744          vaddpd  %xmm1, %xmm0, %xmm0
   745          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   746          vaddsd  %xmm1, %xmm0, %xmm0
   747          cmpq    %rdx, %rax
   748          je      .LBB10_9
   749  .LBB10_7:
   750          vmovapd .LCPI10_1(%rip), %xmm1          # xmm1 = [NaN,NaN]
   751  .LBB10_8:                               # =>This Inner Loop Header: Depth=1
   752          vmovsd  (%rdi,%rax,8), %xmm2            # xmm2 = mem[0],zero
   753          vsubsd  (%rsi,%rax,8), %xmm2, %xmm2
   754          vandpd  %xmm1, %xmm2, %xmm2
   755          vaddsd  %xmm0, %xmm2, %xmm0
   756          addq    $1, %rax
   757          cmpq    %rax, %rdx
   758          jne     .LBB10_8
   759  .LBB10_9:
   760          vzeroupper
   761          retq
   762  .LCPI11_0:
   763          .long   0x7fffffff                      # float NaN
   764  ManhattanDistance_F32_F(float*, float*, unsigned long):       # @ManhattanDistance_F32_F(float*, float*, unsigned long)
   765          testq   %rdx, %rdx
   766          je      .LBB11_1
   767          cmpq    $32, %rdx
   768          jae     .LBB11_4
   769          vxorps  %xmm0, %xmm0, %xmm0
   770          xorl    %eax, %eax
   771          jmp     .LBB11_7
   772  .LBB11_1:
   773          vxorps  %xmm0, %xmm0, %xmm0
   774          retq
   775  .LBB11_4:
   776          movq    %rdx, %rax
   777          andq    $-32, %rax
   778          vxorps  %xmm0, %xmm0, %xmm0
   779          vbroadcastss    .LCPI11_0(%rip), %ymm1  # ymm1 = [NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]
   780          xorl    %ecx, %ecx
   781          vxorps  %xmm2, %xmm2, %xmm2
   782          vxorps  %xmm3, %xmm3, %xmm3
   783          vxorps  %xmm4, %xmm4, %xmm4
   784  .LBB11_5:                               # =>This Inner Loop Header: Depth=1
   785          vmovups (%rdi,%rcx,4), %ymm5
   786          vmovups 32(%rdi,%rcx,4), %ymm6
   787          vmovups 64(%rdi,%rcx,4), %ymm7
   788          vmovups 96(%rdi,%rcx,4), %ymm8
   789          vsubps  (%rsi,%rcx,4), %ymm5, %ymm5
   790          vsubps  32(%rsi,%rcx,4), %ymm6, %ymm6
   791          vsubps  64(%rsi,%rcx,4), %ymm7, %ymm7
   792          vsubps  96(%rsi,%rcx,4), %ymm8, %ymm8
   793          vandps  %ymm1, %ymm5, %ymm5
   794          vaddps  %ymm0, %ymm5, %ymm0
   795          vandps  %ymm1, %ymm6, %ymm5
   796          vaddps  %ymm2, %ymm5, %ymm2
   797          vandps  %ymm1, %ymm7, %ymm5
   798          vaddps  %ymm3, %ymm5, %ymm3
   799          vandps  %ymm1, %ymm8, %ymm5
   800          vaddps  %ymm4, %ymm5, %ymm4
   801          addq    $32, %rcx
   802          cmpq    %rcx, %rax
   803          jne     .LBB11_5
   804          vaddps  %ymm0, %ymm2, %ymm0
   805          vaddps  %ymm0, %ymm3, %ymm0
   806          vaddps  %ymm0, %ymm4, %ymm0
   807          vextractf128    $1, %ymm0, %xmm1
   808          vaddps  %xmm1, %xmm0, %xmm0
   809          vpermilpd       $1, %xmm0, %xmm1        # xmm1 = xmm0[1,0]
   810          vaddps  %xmm1, %xmm0, %xmm0
   811          vmovshdup       %xmm0, %xmm1            # xmm1 = xmm0[1,1,3,3]
   812          vaddss  %xmm1, %xmm0, %xmm0
   813          cmpq    %rdx, %rax
   814          je      .LBB11_9
   815  .LBB11_7:
   816          vbroadcastss    .LCPI11_0(%rip), %xmm1  # xmm1 = [NaN,NaN,NaN,NaN]
   817  .LBB11_8:                               # =>This Inner Loop Header: Depth=1
   818          vmovss  (%rdi,%rax,4), %xmm2            # xmm2 = mem[0],zero,zero,zero
   819          vsubss  (%rsi,%rax,4), %xmm2, %xmm2
   820          vandps  %xmm1, %xmm2, %xmm2
   821          vaddss  %xmm0, %xmm2, %xmm0
   822          addq    $1, %rax
   823          cmpq    %rax, %rdx
   824          jne     .LBB11_8
   825  .LBB11_9:
   826          vzeroupper
   827          retq