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~

Reply via email to