The chop code generator treats intermediate code and assembly language opcodes uniformly, rewriting DAGs of intermediate code into DAGs of assembly code with an automatically-generated decision tree.
The decision tree is generated from a set of rewriting rules. Some of the rules rewrite intermediate code into assembly code, and some of the rules rewrite suboptimal assembly code sequences into better sequences. Chop doesn't really know the difference; it models intermediate code as very expensive assembly code.
The rewriting rules are inferred by a symbolic register-transfer-language-based optimizer. This optimizer compiles a test bed of C code. It generalizes the optimizations that it discovers and records them as rewriting rules.
These details are provided for information only. No information here is legal advice and should not be used as such.