On 09/28/2011 07:34 AM, Nick Clifton wrote: > -(define_insn "smaxsi3" > - [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r") > - (smax:SI (match_operand:SI 1 "register_operand" "%0,0,0,0,0,0") > - (match_operand:SI 2 "rx_source_operand" > - "r,Sint08,Sint16,Sint24,i,Q")))] > +(define_insn "smax<int_modes:mode>3" > + [(set (match_operand:int_modes 0 "register_operand" > "=r,r,r,r,r,r") > + (smax:int_modes (match_operand:int_modes 1 "register_operand" > "%0,0,0,0,0,0") > + (match_operand:int_modes 2 "rx_source_operand" > + > "r,Sint08,Sint16,Sint24,i,Q")))] > "" > "max\t%Q2, %0"
Huh? This doesn't work for HI or QImode. You need to sign-extend them first to get rid of (potential) garbage in the high bits of the register. At least, there's no .W or .B specifiers in the document I have; only .L. r~