On Sat, Aug 20, 2011 at 3:02 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Sat, Aug 20, 2011 at 2:52 PM, Richard Henderson <r...@redhat.com> wrote: >> 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. >> > > Since RA use register pairs for TImode/DImode, should requiring > TI/DI registers in pairs generate better does? ^^^^^^ codes.
Without register pairs, we are generating very strange codes. -- H.J.