This is done by hoisting the instructions to handle ascending vs. non-ascending out of the inner loop in the bisection search. In our application, this function is the largest contributor to total runtime.
This change also fixes a latent bug potentially invoking undefined behavior (accessing element with index -1) if the table is empty.
This is done by hoisting the instructions to handle ascending vs. non-ascending out of the inner loop in the bisection search. In our application, this function is the largest contributor to total runtime.
This change also fixes a latent bug potentially invoking undefined behavior (accessing element with index -1) if the table is empty.
Pivoted flame graph before:![image](https://github.com/The-OpenROAD-Project/OpenSTA/assets/16907534/836f5dbc-f822-4cf5-8ca1-96a6afc414d0)
Pivoted flame graph after:![image](https://github.com/The-OpenROAD-Project/OpenSTA/assets/16907534/adf07522-4e61-4940-b6e5-c7c5e6c6cccf)