On 08/20/2011 02:16 PM, Uros Bizjak wrote: > +(define_insn "bmi2_umul<mode><dwi>3_1" > + [(set (match_operand:<DWI> 0 "register_operand" "=r") > + (mult:<DWI> > + (zero_extend:<DWI> > + (match_operand:DWIH 1 "nonimmediate_operand" "%d")) > + (zero_extend:<DWI> > + (match_operand:DWIH 2 "nonimmediate_operand" "rm"))))] > + "TARGET_BMI > + && !(MEM_P (operands[1]) && MEM_P (operands[2]))" > + "mulx\t{%2, %M0, %N0|%N0, %M0, %2}" > + [(set_attr "type" "imul") > + (set_attr "prefix" "vex") > + (set_attr "mode" "<MODE>")])
You can do better than this, and avoid the %M %N specifiers. The outputs are truly independent and do not need to be a pair. See the mn10300 umulsidi3{,_internal} patterns. r~