> + NULL, /* vector cost */ > +};
Does the P600 series include a vector unit? From what I found on the web it looks like it. If so I would suggest specifying at least the default (generic) vector cost model here. We fall back to the default one for NULL but I find it more explicit to specify one. > +;; The Sifive 8 has six pipelines: P600? Is 8 the generation and P600 the official name? > +(define_insn_reservation "sifive_p600_div" 33 > + (and (eq_attr "tune" "sifive_p600") > + (eq_attr "type" "idiv")) > + "sifive_p600_M, sifive_p600_idiv*32") > + > +(define_insn_reservation "sifive_p600_fdiv_s" 18 > + (and (eq_attr "tune" "sifive_p600") > + (eq_attr "type" "fdiv,fsqrt") > + (eq_attr "mode" "SF")) > + "sifive_p600_FM, sifive_p600_fdiv*17") > + > +(define_insn_reservation "sifive_p600_fdiv_d" 31 > + (and (eq_attr "tune" "sifive_p600") > + (eq_attr "type" "fdiv,fsqrt") > + (eq_attr "mode" "DF")) > + "sifive_p600_FM, sifive_p600_fdiv*30") I would suggest not to block the units for that long. It will needlessly increase the automata's complexity causing longer build times. Even if you want to keep the latency high (doubtful if that's beneficial in terms of spilling) you could just block the unit for maybe 3-5 cycles. Up to you in the end, though and not a blocker. Regards Robin