When I want to put a constant into a multi-ifield, the exact instructions how to set the subfields are apparently ignored, and the total value is copied into the subfields. I have found this while working on my machine desscription, and I could reproduce this with a small synthetic testcase, attached as foo.cpu. I've put tis file into the cgen/cpu directory, and then with the cgen directory as the cwd, invoked guile and evaluated: (load "dev.scm") (load-sim) (cload #:arch "foo" #:machs "foo") (cgen-decode.c) note that the expected value to check entire_insn against is 0x1324, but generated test is: if ((entire_insn & 0xffff) == 0x12424)