<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/65212>65212</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Vetorization of loop reduction introduces an aligned store incorrectly
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            vectorization
      </td>
    </tr>

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

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

<pre>
    ```llvm
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @fn(ptr %hbuf, ptr %ref, i32 %height) {
entry:
  store i16 0, ptr %hbuf, align 1
  br label %for.cond

for.cond:
  %i = phi i32 [ 0, %entry ], [ %inc, %for.body ]
  %cmp = icmp slt i32 %i, %height
  br i1 %cmp, label %for.body, label %for.end

for.body:
  %0 = load i16, ptr %ref, align 1
  %1 = load i16, ptr %hbuf, align 1
  %add = add i16 %1, %0
 store i16 %add, ptr %hbuf, align 1
  %inc = add i32 %i, 1
  br label %for.cond

for.end:
  ret void
}
```

All memory accesses above have align=1, but the loop vectorizer produces a store with align=2:
```llvm
middle.block:
  %bin.rdx = add <8 x i16> %2, %1
 %4 = tail call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %bin.rdx)
 store i16 %4, ptr %hbuf, align 2 ; <-------------------  should be align 1
  %cmp.n = icmp eq i32 %n.vec, %height
  br i1 %cmp.n, label %for.end, label %for.body.preheader7
```

cc @fhan @david-arm @igogo-x86 @lucic71
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVcuSszgPfRqzcUGBuGbBorvz9wv8VbOdMrYCns_YjDH5knn6KRtIOpP0XLq6wDbS0ZGO5LB5lr1GbEn5TspjxBY3GNvqRZtJmQnnqDPi2pIqXf-VOo8kPZL0zTHbo6OCOabY1SyOkvxICQDGI8nfMJ6gTkn-lkN4-G32uPWrqgiPWO6LU-OdMmhi3fhFtftURfz_DBoC8BDfWTkp3GNfmurXqogX_UObnzpWUi-XuNfLzWt9CjxJjfRspKCkSE-aQDM5SwmUQ7ecCHzQbWsx7GQO4SPKfnAEDpTU7ysUamevJN-AKZ2dsUhlVtH0C8yOypTsNc12485SxTpU3uRkbMKNFl953s7u-ARKGbKdBrnSKt_XUATKQIaS8hj25Xuw1nz76tG8msHgDsfHKQBKv5iV25OVm9uW9J2yzDY3b_DA36M_HeJzTsHuIac0UFCGCV-7ZwH-UjgCZfadxze1JlAyIYKTf3uFPMqWZLqZ3eVb7f8VrtT8jvuleP9JZ3yQ2aIL7blZ1Ztgtzn86v2mFB1xNPZKGec4zzhT1pkz0oGdceVL8mNItVscdQNSZcxEz8idsfIPtHSyRizcO24l-CndcHOFG7MXF8EohVCYdMrwH4-idlInVlxutSH5R0MvQa78f94AturvhSJQFsHaMakoZ0qtUhQhXLLyTSx6qgkTIjk3QfvmCXkLTeDwStjiW1mBkvzdE42f_yidB7MoQTt80QR8nBJ9HyT8fW8F7Xn_4ywl-uXgvJqwZLI4IBNo67_pCs7D1TYw7d-CnaWImR39RvamN_GlWSu7cMnrLBJtLg75gUXYZtUhr5oDVBAN7eGEIj3VadExwLwuMmRYZ4LVaQVdXkIkW0ghTw8pQJYVAInAsq4alpeHHBoUjBQpjkyqJIhobB_JeV6wrUrIIArpzeH3B2CUMzfjJBVz0mh_a8MHAdgb9XZaHiPberi4W_rZZyFnN98DOOkUtr_g3Yua09r0oXvCidTu1vV6VRTF3iiaG2uRO3WNFqvawblp9t0NnwQ-e-mGpUu4GQl8hklYX_FkzW_IHYHPkOJM4DNk-WcAAAD__0ZNHBA">