By: Kevin G (kevin.delete@this.cubitdesigns.com), August 25, 2022 8:47 am
Room: Moderated Discussions
Mark Roulo (nothanks.delete@this.xxx.com) on August 24, 2022 4:25 pm wrote:
> Kara (karaardalan.delete@this.gmail.com) on August 24, 2022 2:07 pm wrote:
> >
> > Since like my second year programming I stopped writing branched code totally,
> > few tens of thousands lines of code in, I haven't encounter anything that
> > intrinsically requires speculative branch prediction, like logically.
> >
> > But I write only numes.
> >
> > Is there any program that can't be written without a branching that can't
> > be rephrased (literally, all that is is rephrasing) into branchless?
> >
> > Mind risc-v don't offer BPU, there's extensions but not in the requirements.
>
> How do you write code to do one thing if a condition holds and another thing if the condition doesn't hold?
>
> Example:
For something like this, multiplication of the raw boolean and the pointer to the strings to print would work. Both "Hello" and "Goodbye" multiplications need to be processes and then summed to create a new pointer for the resulting value. This assumes that true is a simple bit of 1 and false is 0. There are three main operations using this style vs. two that are actually performed in the if-else statement.
This technique was leveraged heavily for arcane platforms like IBM's Cell whose SPE units had utterly poor branching performance but could run through those calculations. Due to the awkward architecture, doing more but faster operations was faster in real time than simpler but costly branching.
> Kara (karaardalan.delete@this.gmail.com) on August 24, 2022 2:07 pm wrote:
> >
> > Since like my second year programming I stopped writing branched code totally,
> > few tens of thousands lines of code in, I haven't encounter anything that
> > intrinsically requires speculative branch prediction, like logically.
> >
> > But I write only numes.
> >
> > Is there any program that can't be written without a branching that can't
> > be rephrased (literally, all that is is rephrasing) into branchless?
> >
> > Mind risc-v don't offer BPU, there's extensions but not in the requirements.
>
> How do you write code to do one thing if a condition holds and another thing if the condition doesn't hold?
>
> Example:
I'll note that the conditional operator (?) is a branch.
> if (b)
> printf("Hello");
> else
> printf("Goodbye");
>
For something like this, multiplication of the raw boolean and the pointer to the strings to print would work. Both "Hello" and "Goodbye" multiplications need to be processes and then summed to create a new pointer for the resulting value. This assumes that true is a simple bit of 1 and false is 0. There are three main operations using this style vs. two that are actually performed in the if-else statement.
This technique was leveraged heavily for arcane platforms like IBM's Cell whose SPE units had utterly poor branching performance but could run through those calculations. Due to the awkward architecture, doing more but faster operations was faster in real time than simpler but costly branching.