Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

If-Conversion Analysis

If-Conversion is an LLVM transformation that converts if-then-else statements into predicated code. In this project we investigate its effect on cache behaviour and branch predictor unit.

Step by step guide to reproduce results:

Prerequisites

You need to have followings installed on your system:

Running static code analyzer

  • Open /test/Compiled_files/run_analysis.sh file
  • Change LLVM_BUILD_DIR variable to point to LLVM installation direcory
  • By default it will be executed on dikjesta.c file, if you want to test on another file, change FILENAME variable
  • Save changes and execute run_analysis.sh

Running analysis on if-converted version

  • run /test/Compiled_files/run_perf_on_full_opt_version.sh file
  • results will be saved in results directory
  • Note: Upon running this file you may encounter error saying that You may not have permission to collect stats. Use the solution provided in this link to slove the issue.

Running analysis on version without if-conversion

To compile the code with if-conversion disabled, you need to make following changes in your LLVM library files:

See the results

  • Go to /test/Compiled_files/results
  • Run Python scripts.py
  • Results for perf evaluations will be printed, Also distribution of results for cache miss rate and miss-prediction rate will be illustrated in following files:
    • dijkstra_full_opt_branch_Result.png
    • dijkstra_full_opt_cache_Result.png
    • dijkstra_no_select_branch_results.png
    • dijkstra_no_select_cache_results.png

Results for each step is provided, so you can skip each step you want and use provided files.

About

Analyzing Effect of If-Conversion transformation on cache behaviour and branch predictor unit

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages