Hi, I would like some advice to figure out what is the correct way to hande my movhi insn. My target has general registers (natural mode HI, constraint r), and base registers, which are not GENERAL_REG class(natural mode PSI, may contain HI, contraint A). My main problem is when defining a *movhi insn whose constraints/predicates only support r registers, GCC may reload some r register into A subreg:HI register, and complains because the insn *movhi does not satisfy its constraints (r). How to prevent this ? BTW, to handle movhi from subreg:HI A to subreg:HI A, which is not supported by the target: should I define a define_expand movhi whose predicates supports such an operation, and then, provide a define_split to froce passing through a r reg ? Is there a more efficient way to do this ? Thanks Aurélien