Register allocation, instruction selection and instruction scheduling can, with a degree of bloodyminded patience, all be solved with boolean SAT. That's a compiler backend.
I like the higher level CSP more as an interface but those are _probably_ best solved by compilation to SAT. SMT also worth a look.
I like the higher level CSP more as an interface but those are _probably_ best solved by compilation to SAT. SMT also worth a look.