On Fri, Dec 17, 2021 at 10:33:12PM -0500, David Edelsohn wrote: > On Thu, Dec 16, 2021 at 9:43 PM HAO CHEN GUI <guih...@linux.ibm.com> wrote: > > +(define_insn "rs6000_mffscrni" > > + [(set (match_operand:DF 0 "gpc_reg_operand" "=d") > > + (unspec_volatile:DF [(match_operand:DF 1 "u2bit_cint_operand" "n")] > > Why is this input operand 1 DFmode? This is a 2 bit integer value. > This pattern is called from rs6000_set_fpscr_rn with an SImode > operand, and it seems that this should be SImode as well.
Yup. This predicate will only allow const_int, and matching a const_int ignores the mode, so most (or all?) things will work whatever mode you give here. But only MODE_INT modes make sense (and possibly VOIDmode, but VOIDmode in machine descriptions means anything is allowed, also not what you want here). Segher