In the response of Paolo I also don't understand how the DI pseudo could be mapped on two consecutive SI regs. I think gcc always will map a multiword pseudo on consecutive word-size regs. Am I wrong here ?
Oops, I forgot a part. In the RTL description don't write [(set (match_operand:DI 0 "register_operand") (unspec [...] SUPER_LD32))] but [(set (subreg:SI (match_operand:DI 0 "register_operand") 0) (unspec [...] SUPER_LD32_LO)) (set (subreg:SI (match_operand:DI 0 "register_operand") 4) (unspec [...] SUPER_LD32_HI))] Paolo