Hi! On Fri, Jul 10, 2020 at 09:39:40AM +0800, luoxhu wrote: > OK, seems the md file needs a format tool too...
Heh. Just make sure it looks good (that is, does what it looks like), looks like the rest, etc. It's hard to do anything nice with unspecs, [ ] lists do not format well. > >> + "TARGET_NO_SF_SUBREG" > >> + "#" > >> + "&& vsx_reg_sfsubreg_ok (operands[0], SFmode)" > > > > Put this in the insn condition? And since this is just a predicate, > > you can just use it instead of gpc_reg_operand. > > > > (The split condition becomes "&& 1" then, not ""). > > OK, this seems a bit strange as movsi_from_sf, movsf_from_si and > movdi_from_sf_zero_ext all use it as condition... Since in your case you *always* split, the split condition should be "always". There are no alternatives that do not split here. > And why vsx_reg_sfsubreg_ok allows "SF SUBREGS" and TARGET_NO_SF_SUBREG > "avoid (SUBREG:SF (REG:SI)", I guess they are not the same meaning? (The > TARGET_NO_SF_SUBREG is also copied from other similar defines.) Thanks. Good question. I do not know. Well... Since this define_insn* requires p8 *anyway*, we do not need any of these sf_subreg things? We always know for each one if it should be true or false. > + "TARGET_NO_SF_SUBREG" But here we should require p8 some other way, then. > + (set_attr "isa" "p8v")]) (This isn't enough, unfortunately). Segher