<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">