<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">The builtin was created to call __clear_cache() on platforms that need<br>
</div>
it (like ARM and MIPS), but to be ignored on others (like x86_64).<br>
<br>
This builtin should call __clear_cache() from whatever library is<br>
available at the moment, so there is no overlap, just supporting the<br>
GCC builtin to avoid calling a noop function when not needed.<br></blockquote><div><br></div><div>I see, this makes sense. Agreed it's useful, thanks for explaining.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="">That's an idea that might not be a good one. I was thinking if, in<br></div>
some occasions, we could emit directly the instructions, but that will<br>
have to deal with lower level stuff that we don't want on the<br>
intrinsic level. GCC just emits a call to __clear_cache() and, at the<br>
very least, we should do the same for now.<br>
<br>
That optimisation might come later, at a much lower level, but I have<br>
my doubts if that's relevant. We shouldn't be clearing the cache on a<br>
hot loop anyway. ;)</blockquote><div><br></div><div>Maybe a naive question, but it seems better to just use inlining instead of reimplementing the same logic within LLVM. That requires static linking/LTO, so it's not that workable.</div>
</div></div></div>