branchless partition3_sp2 - only half is branchless but already faster

This commit is contained in:
Richard Thier 2025-05-05 23:04:27 +02:00
parent 5d6ea0e778
commit 09ed5dd548

View File

@ -258,10 +258,11 @@ static inline pret3 partition3_sp2(uint32_t array[], int low, int high, uint32_t
while(jl <= jr) { while(jl <= jr) {
/* Handle left and find wrongly placed element */ /* Handle left and find wrongly placed element */
while((array[jl] <= pivotval) && (jl <= jr)) { while((array[jl] <= pivotval) && (jl <= jr)) {
if(array[jl] != pivotval) { int isNonPivot = (array[jl] != pivotval);
if(++il != jl) int nonSameIndex = (il + 1 != jl);
swapit(&array[il], &array[jl]); if(isNonPivot & nonSameIndex)
} swapit(&array[il + 1], &array[jl]);
il += isNonPivot & nonSameIndex;
++jl; ++jl;
} }