Sorav Bansal and Alex Aiken
Gokulan R
CS15B033
29 April 2020
offline training phase: // input: training program
harvester: extract instruction sequences
canonicalizer: rename registers to reduce search space
fingerprinter: compute fingerprint for instruction sequence
and store in fingerprinting table
enumerator: generate sequence of possible assembly instructions
fingerprinting: fingerprinting of a generated sequence
search in fingerprinting table: check if any equivalent sequence
is present in training program
if yes:
boolean check: check if contexts match
if yes:
store in optimization table
online optimization phase: // input: program to compile
while no optimization exists:
harvest an instruction sequence
canonicalize it
fingerprint it
search optimization table
replace sequence if optimization found