On 10/22/20 2:02 AM, Henri Cloetens wrote: > Hello all, > > I have an issue with my custom compiler back-end after reload. > > 1. The machine has move-instructions that can do following: > a. From register file to (register indirect offset) or to register > file. > b. From (register indirect offset), register file, immediate to > register file > > 2. I have now 3 patterns to emit moves in the .md-file: > > 1. movesi_internal_fromreg (from register file to memory or > register file) > 2. movesi_internal_toreg (from memory , immediate, register file > to register file) > 3. movesi : define_expand. It has C-code that analyses the > operands and selects 1,2 or both. > > Motivation for the split was problems with the "combine" step. Suppose > following code: > *a = 10. > Even if my front_end (define_expand) splits this in > r100 = 10 > *r101 = r100 > the combine step, if these is only one movesi_internal, willl group > it again, to then find out > there is no instruction pattern. This is an indication the insn's condition or operand's predicate or operand constraints are wrong. Jeff