<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzdWFFz2jgQ_jXmZaceSTYQHnigzfByfbuZ3GNHloStnmw5khyS_vpbCZIALYHOUdrJjMGSdrX7fau11nJl5dN8aR181g_KtdYp-Eu5ThlgNGOfQBje1SBtl7FpgFp1yvGg4EGJYJ3-xoO2HXAPxnIJuvPBDSKNCesDBGuh0XWDks1Aa6Uy0a63oAOIxlqvIDQK7pZZcUvRsPM4PYcmhN5nxSJjS7xqKytrQm5djb1v8Vfcj--tLP7JyG1GFpv_pbNtsiaHto9u1goE78ArBa1Cdk_AhVDe70HN2I3uhBmkRqqRCJr3SE9lbHbAY61Dg_qIapEAs017i2FCtlfqfr5D-LC0QycBMSgfdIuxkxuTdgUEVhj4uyVQiCuwAylOBPQz_pqTssgHv7kAPULfaNCTErLxRyCRI6qhnVzYTs7y3qlGcanczqTxbVJDfVRFpi-indkV5gFl-5MuxoI7x5-0fKTjfSq1CsqoVnWhD3FmFb1E3x8pofAYG2yMd2mHyqgI6YXKWwoLyEoiHqNmDBR5bnwXzx3BvyiYbEfP481O8y4Sy_RobBGiw-fW4khkog43uu7gZrM-NFScxztll4PWDmZ_LVY4gga64LgIW5BRkW2TpPgF6TC9Xjr0P5cOGgXlq-BiYS_Pz4jplTOCS3mQETjyo4wotxmxm0IXgpF23R1Xu5iuFCl6OlK7W2iKVAxUN6yh8-vjmUUvB0A96hC3-7yzIQHQou1B3b9k7_d7_LneTz2-FY7RQwzRh-EVvjTs1aLnVi6M4t3QU_pFOB2-KFmrPXx7cw8q0XYdjXloc2Ntnxaz3GXzt-CGO0jCSCO-NQBa-FnG7F1U4eMs3mcVpqeJ__YyfBzary_DZ-TDeyvDZ6TEb6_DbyzLNerwqRD9SYX4eKiuVIiPA7hGIT7i_Q8sxHfpo8CmECODtZZ4WGavNbko84OD8kjOCzkrZnzEh9BYN39YydVqNDgzPzj_47l7qJBEi50IYXv70Dv7Fd1iV3s_KES5HBdlMR418-KmIIRNhSCSUUlmYzWZ0PIGyU0qUcrpKLH1c9yuMsY6hSkTTWAb96vR_0eg54wwRiibElowQnJK5WRWrQohCV9VkxvcD1XLtclTTK2rR26eTFZD7VFoNAbuVci9xwdKqQQYEQYdTOrsfYxByRufOt74KjNK8OcJ-3-tt5vO>53435</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [vectorization] memory access instruction cost too high in cost model
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          vfdff
      </td>
    </tr>
</table>

<pre>
    For Livermore Kernel 21, clang don't generate vectorization as load instruction cost too high in cost model, so it choose the VF=1 version. https://godbolt.org/z/z3q5qod3W

>From the dump, we can see memory access instruction (including load/store) cost too high with **VF=2**
```
LV: Found an estimated cost of 0 for VF 1 For instruction:   %j.043.us.us.us = phi i64 [ 0, %for.cond9.preheader.us.us.us ], [ %inc.us.us.us, %for.body12.us.us.us ]
LV: Found an estimated cost of 0 for VF 1 For instruction:   %arrayidx15.us.us.us = getelementptr inbounds [101 x [25 x double]], [101 x [25 x double]]* @cx, i64 0, i64 %j.043.us.us.us, i64 %k.046.us.us
LV: Found an estimated cost of 2 for VF 1 For instruction:   %3 = load double, double* %arrayidx15.us.us.us, align 8, !tbaa !12
LV: Found an estimated cost of 2 for VF 1 For instruction:   %mul.us.us.us = fmul contract double %2, %3
LV: Found an estimated cost of 0 for VF 1 For instruction:   %arrayidx17.us.us.us = getelementptr inbounds [101 x [25 x double]], [101 x [25 x double]]* @px, i64 0, i64 %j.043.us.us.us, i64 %i.044.us.us.us
LV: Found an estimated cost of 2 for VF 1 For instruction:   %4 = load double, double* %arrayidx17.us.us.us, align 8, !tbaa !12
LV: Found an estimated cost of 2 for VF 1 For instruction:   %add.us.us.us = fadd contract double %4, %mul.us.us.us
LV: Found an estimated cost of 2 for VF 1 For instruction:   store double %add.us.us.us, double* %arrayidx17.us.us.us, align 8, !tbaa !12
LV: Found an estimated cost of 1 for VF 1 For instruction:   %inc.us.us.us = add nuw nsw i64 %j.043.us.us.us, 1
LV: Found an estimated cost of 1 for VF 1 For instruction:   %exitcond.not = icmp eq i64 %inc.us.us.us, %1
LV: Found an estimated cost of 0 for VF 1 For instruction:   br i1 %exitcond.not, label %for.cond9.for.cond.cleanup11_crit_edge.us.us.us, label %for.body12.us.us.us, !llvm.loop !14
LV: Scalar loop costs: 12.
LV: Found an estimated cost of 0 for VF 2 For instruction:   %j.043.us.us.us = phi i64 [ 0, %for.cond9.preheader.us.us.us ], [ %inc.us.us.us, %for.body12.us.us.us ]
LV: Found an estimated cost of 0 for VF 2 For instruction:   %arrayidx15.us.us.us = getelementptr inbounds [101 x [25 x double]], [101 x [25 x double]]* @cx, i64 0, i64 %j.043.us.us.us, i64 %k.046.us.us
LV: Found an estimated cost of 21 for VF 2 For instruction:   %3 = load double, double* %arrayidx15.us.us.us, align 8, !tbaa !12
LV: Found an estimated cost of 2 for VF 2 For instruction:   %mul.us.us.us = fmul contract double %2, %3
LV: Found an estimated cost of 0 for VF 2 For instruction:   %arrayidx17.us.us.us = getelementptr inbounds [101 x [25 x double]], [101 x [25 x double]]* @px, i64 0, i64 %j.043.us.us.us, i64 %i.044.us.us.us
LV: Found an estimated cost of 21 for VF 2 For instruction:   %4 = load double, double* %arrayidx17.us.us.us, align 8, !tbaa !12
LV: Found an estimated cost of 2 for VF 2 For instruction:   %add.us.us.us = fadd contract double %4, %mul.us.us.us
LV: Found an estimated cost of 21 for VF 2 For instruction:   store double %add.us.us.us, double* %arrayidx17.us.us.us, align 8, !tbaa !12
LV: Found an estimated cost of 1 for VF 2 For instruction:   %inc.us.us.us = add nuw nsw i64 %j.043.us.us.us, 1
LV: Found an estimated cost of 1 for VF 2 For instruction:   %exitcond.not = icmp eq i64 %inc.us.us.us, %1
LV: Found an estimated cost of 0 for VF 2 For instruction:   br i1 %exitcond.not, label %for.cond9.for.cond.cleanup11_crit_edge.us.us.us, label %for.body12.us.us.us, !llvm.loop !14
LV: Vector loop of width 2 costs: 34.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdWE1v2zgQ_TXyZbCCSMlfBx3cDXzZ3hbIHgtKHEnsUqJCUnHSX79D2Ulsdx27gOsWAWSL4gxn3huOOCILI5_ztbHwWT2ibY1F-Atthxo4i_ifUGrR1SBNF_G5hxo7tMIjPGLpjVXfhFemA-FAGyFBdc7boRz7SuM8eGOgUXVDkm1HayTqYNcZUB7KxhiH4BuE-3WU3jEybB0Nj6HxvndRuor4mq7ayMJoHxtb09O38Esfpg9Gpv9EyV2UrLb_a2va0Zoc2j642SCUogOHCC0Su2cQZYnOHUCN-EJ1pR6kIqqBCJl3RA8jvjzisVG-IX1CtRoB8217h2GW7K7x8fM9wYe1GToJhAGdVy3FTm5NmgoSqCjw92tgEGZgD1IYCORn-jVOsjQe3PYC8gh9o0DNMoimnyAJHEmN7MSl6eQy7i02KCTavUHTu1GN9EmVmL6K9kYXlAeMHw66GgthrXhW8olND6nU6FFji53vfRhZBC_B9yeWMHgKDT6luzRDoTFAeqXynsIKoiwpn4JmCFTy0vgunnuCf0kw2_Vexpuf552OLMdXY4eQHL60ViciE3SEVnUHi-38MF8IEe6MXw9aO-jDuaiohwx03orS70AGRb5LkvQnpMP8dunQ_1g6KBJkb4KrhT27PCPmN84IIeVRRlDP_2VEtsuI_RS6Eoxx1d1ztY_pRpFi5yO1v4SOkQqB6oYNdG5zOrPY9QDgk_JhuY8740cAqmx7wIfX7P1-jb_U-7nXt6A-dowh-NCioI-Gg1r00opLjaIbesa-lFb5LyhrPMB3MPaoEu3mUevHNtbG9ONkZvts_i6FFhZGYaARvhqALPwoY_4hqvBpFh-zCrPzxH95GT4N7eeX4Qvy4aOV4QtS4pfX4Xem5RZ1-FyIfqdCfDpUNyrEpwHcohCf8P4bFuL78VBgW4iJwUZJ2izzt5qcZvHRRnki81Qu06WYeOU15rRyHJws0MLxzr79nSOGyWB1fnSEQFv3oaA4tPQQWOxuf_TWfCWn9KicG5CIrqdplk4nTZ4t5Hy2WM4rLhCTajldLAspZmwuq2W1KGaTMWAu4I4475CyLpigNiGfqJwnnCeMzxOW8iSJGZOzZVGlpUxEVcwWtCBiK5SOx6AaW09sPkIqhtqRUCuK3JtQOEdvFI5hCvbF4Btj88dKVtVkdJyPwP8DPr-HSw">