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

    <tr>
        <th>Summary</th>
        <td>
            Can `prefetchw`+`mov` to that location be folded to a `movnti`?
        </td>
    </tr>

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

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

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

<pre>
    See title. Please pardon my ignorance on this topic but I am not really sure how to look up the answer to this kind of question. 

I have this Zig code:

```zig
export fn movnti(dest: *u32, src: u32) void {
    @prefetch(dest, .{ .rw = .write, .locality = 0 });
    dest.* = src;
}
```

Here is the LLVM IR:

```llvm
define dso_local void @movnti(ptr nocapture nonnull align 4 %0, i32 %1) local_unnamed_addr {
Entry:
  tail call void @llvm.prefetch.p0(ptr nonnull %0, i32 1, i32 0, i32 1)
  store i32 %1, ptr %0, align 4
  ret void
}

declare void @llvm.dbg.value(metadata, metadata, metadata) #1

declare void @llvm.prefetch.p0(ptr nocapture readonly, i32 immarg, i32 immarg, i32 immarg) #2
```

Currently turns into this on x86 Zen 3:

```asm
movnti:
        prefetchw byte ptr [rdi]
        mov     dword ptr [rdi], esi
 ret
```

My question is, could this be turned into a `movnti` instruction?

Thank you.

https://zig.godbolt.org/z/hffbv46vs
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVEGPozgT_TXOpTTImEDgwKE7-aKvpRlptbuaw1xaBlfA28ZmbZMM_etXNiGdnp3pjSIw5apX9Z7LxZ2TnUasSf5I8sOGT743tv7KlRTcvmwaI-b6D0Tw0itM4DeF3CGM3AqjYZhBdtpYrlsEo8H30oE3o2yhmTw8AR9AGw8WuVIzuMki9OYC3oAy5gWmEXyPwLW7oA3WCPAitQBzgr8ndF4anQChB0IflucT9PyMi-c32UFrBJLs4d6FFHT5v8puseD30VgPJw2DOWsvCSsFOk-yByDsYcoYYXtwtg2G-FXB2UgBZPe4AAAAkC0dLZ7Qt_0az_aQkN0jJPYCJDtAcrHSYzQr03Il_RztFMjuQFhFsju8gJAQ9hA9YvLrZvB9T-Se3f_RIgSde4TPn79-gafff8VfqfOwmASepEYQzjzHwq70tvSmx-gtaNPy0YdT0kbrSSngSnYatkBYTgMtmbGwToNCEeh50poPKJ65EPZNr_9pb-dbWQCeSwUtV2-JQ23Jqmcy0lsJS-L7hOm6uLdUK7TzJghyK2wPAWeNvxJYnS36WMGPQl9FahW3-L5E0XTJmasJCSsH9FxwzwPwz9cVEJal_wn6M96r9Ba5MFrNK1c5DNx2H3_FtOyDptlP1qL2agY_We1A6vW2GQ3fywK-oYbsV33E3bWNrt3ydq7Lb6VzgWb2uOifP1ohSX547zmYc3yLi7HiB0e2B3Ty6m_Rf0Dny3ybDiBdiGzNpMTCqMFIEsXCkgMp1jYvKEjtvJ3aEEqy4z3onz3XLzCbKbm39t6PLjBmR8KOr7JLOiMao3xigvLHV8KO_enUnLfF2W1EnYkqq_gG63SX5nRbVmm56WtKhUjbJt0WFRNpxnlZ4vZEs3zHCmRZtpE1o2xLc7qjjJVZmWRFmldVwUrOaXHKW7KlOHCpkthAxnYb6dyEdZWyim0Ub1C5OMUZ03iBuEkYC0Pd1iHmUzN1LjSgdN69ocTBXu-5DjLdDjLozR4X4YJqsVu4j3c-qt4gnIwSKOBfEpPsuJmsqt8r10nfT03SmoGwYxxMy-vTaM1f2HrCjrFmR9gxcvonAAD__0ch91M">