aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Selectionaux.ml
Commit message (Collapse)AuthorAgeFilesLines
* finish merging master branch (fixes problems in glpk colamd)David Monniaux2019-06-061-4/+0
|
* Merge branch 'master' of https://github.com/AbsInt/CompCert into mppa-workDavid Monniaux2019-06-061-0/+13
|\
| * If-conversion optimizationXavier Leroy2019-06-061-0/+113
| | | | | | | | | | | | | | | | | | | | Extends the instruction selection pass with an if-conversion optimization: some if/then/else statements are converted into "select" operations, which in turn can be compiled down to branchless instruction sequences if the target architecture supports them. The statements that are converted are of the form if (cond) { x = a1; } else { x = a2; } if (cond) { x = a1; } if (cond) { /*skip*/; } else { x = a2; } where a1, a2 are "safe" expressions, containing no operations that can fail at run-time, such as memory loads or integer divisions. A heuristic in backend/Selectionaux.ml controls when the optimization occurs, depending on command-line flags and the complexity of the "then" and "else" branches.
* start to have whole path if-conversion?David Monniaux2019-06-041-1/+1
|
* rm old select/selectl/selectf/selectfsDavid Monniaux2019-06-031-3/+3
|
* ARM: select is not supported at type TlongXavier Leroy2019-06-011-2/+3
|
* If-conversion optimizationXavier Leroy2019-05-311-0/+108
Extends the instruction selection pass with an if-conversion optimization: some if/then/else statements are converted into "select" operations, which in turn can be compiled down to branchless instruction sequences if the target architecture supports them. The statements that are converted are of the form if (cond) { x = a1; } else { x = a2; } if (cond) { x = a1; } if (cond) { /*skip*/; } else { x = a2; } where a1, a2 are "safe" expressions, containing no operations that can fail at run-time, such as memory loads or integer divisions. A heuristic in backend/Selectionaux.ml controls when the optimization occurs, depending on command-line flags and the complexity of the "then" and "else" branches.