Standard way to supply hints to branches

Nicholas Wilson iamthewilsonator at hotmail.com
Fri Aug 23 02:23:37 UTC 2024


On Friday, 23 August 2024 at 01:47:37 UTC, Manu wrote:
> I'm working on microcontrollers, and many don't have a branch 
> predictor. They do "static" prediction, that is, they just 
> predict branch-not-taken and it's on you to write your code as 
> such, and that's not always possible. (like the loop condition 
> in a for loop)
>
> This leads to a lot of awkward looking if's written in 
> unnatural 'backwards' terms, and also, leads to undesirable 
> depth of nested scopes.
>
> The compiler backend can and should re-jig the comparisons, but 
> it needs to receive a hint which way is 'likely' from the 
> programmer.
>
> How can we add an attribute to the branch condition that the 
> backend can take advantage of? I think it needs to be in the 
> language spec...

For LDC see, 
https://github.com/ldc-developers/ldc/blob/master/runtime/druntime/src/ldc/intrinsics.di#L619 and see also `llvm_assume` just beneath it.

GDC probably has something similar too.




More information about the Digitalmars-d mailing list