Integrated instruction selection and register allocation for compact code generation exploiting freeform mixing of 16- and 32-bi