I am learning to program the GBA (an old Nintendo console). I was reading one of the best tutorials on this and I was saying this about how you can do branching with arithmetic.
[To optimise your code] avoid branches Things that redirect the flow of the program (ifs, loops, switches) generally cost more than other operations such as arithmetic. Sometimes it is possible to effectively make the branch with arithmetic (for example, (int) x >> 1 da -1 or 0, depending on the sign of x)
(Emphasis mine, taken from https://www.coranac.com/tonc/text/first.htm)
But if it returns 0 or -1, Would not you need a branch to see what it is? and execute the corresponding instructions? Obviously, the previous explanation lacks some details, but I do not see how this avoids a branch.