On 7/17/20 3:23 PM, Segher Boessenkool wrote: > On ISA 3.0B and later you can do > > mffscdrni %3,7 > drdpq %2,%1 > mffscdrn %3,%3 > drsp %0,%2 > > (saving one insn, and using somewhat cheaper insns). But that is only > on newer machines, so is this worth it at all? :-)
So something like the following? Peter (define_insn "trunctdsd2" [(set (match_operand:SD 0 "gpc_reg_operand" "=d") (float_truncate:SD (match_operand:TD 1 "gpc_reg_operand" "d"))) (clobber (match_scratch:TD 2 "=&d")) (clobber (match_scratch:DF 3 "=&d"))] "TARGET_DFP" { if (TARGET_MODULO) return "mffscdrni %3,7\;drdpq %2,%1\;mffscdrn %3,%3\;drsp %0,%2"; else return "mffs %3\;mtfsfi 7,7,1\;drdpq %2,%1\;mtfsf 0xff,%3,1,0\;drsp %0,%2"; } [(set_attr "type" "dfp") (set (attr "length") (if_then_else (match_test "TARGET_MODULO") (const_string "16") (const_string "20")))])