On 10/23/2011 08:53 PM, David Miller wrote: > -(define_insn "*movsi_insn" > +(define_insn "*movsi_insn_novis3" > [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,m,!f,!f,!m,d,d") > (match_operand:SI 1 "input_operand" "rI,K,m,rJ,f,m,f,J,P"))] > - "(register_operand (operands[0], SImode) > - || register_or_zero_or_all_ones_operand (operands[1], SImode))" > + "(! TARGET_VIS3 > + && (register_operand (operands[0], SImode) > + || register_or_zero_or_all_ones_operand (operands[1], SImode)))" > "@ > mov\t%1, %0 > sethi\t%%hi(%a1), %0 > @@ -1329,6 +1330,26 @@ > fones\t%0" > [(set_attr "type" "*,*,load,store,fpmove,fpload,fpstore,fga,fga")]) > > +(define_insn "*movsi_insn_vis3" > + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r, m, r,*f,*f,*f, > m,d,d") > + (match_operand:SI 1 "input_operand" "rI,K,m,rJ,*f, r, f, > m,*f,J,P"))] > + "(TARGET_VIS3 > + && (register_operand (operands[0], SImode) > + || register_or_zero_or_all_ones_operand (operands[1], SImode)))" > + "@ > + mov\t%1, %0 > + sethi\t%%hi(%a1), %0 > + ld\t%1, %0 > + st\t%r1, %0 > + movstouw\t%1, %0 > + movwtos\t%1, %0 > + fmovs\t%1, %0 > + ld\t%1, %0 > + st\t%1, %0 > + fzeros\t%0 > + fones\t%0" > + [(set_attr "type" "*,*,load,store,*,*,fpmove,fpload,fpstore,fga,fga")])
You shouldn't need to split these anymore. See the enabled attribute, as used on several other targets so far. r~