This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH] [MIPS] Support microMIPS HI/QI moves


> -----Original Message-----
> From: Maciej W. Rozycki [mailto:macro@codesourcery.com]
> Sent: Monday, April 22, 2013 5:09 PM
> To: Moore, Catherine
> Cc: rdsandiford@googlemail.com; gcc-patches@gcc.gnu.org
> Subject: Re: [PATCH] [MIPS] Support microMIPS HI/QI moves
> 
> On Mon, 1 Apr 2013, Moore, Catherine wrote:
> 
> >  (define_insn "*movhi_internal"
> > -  [(set (match_operand:HI 0 "nonimmediate_operand" "=d,d,d,m,*a,*d")
> > -       (match_operand:HI 1 "move_operand"         "d,I,m,dJ,*d*J,*a"))]
> > +  [(set (match_operand:HI 0 "nonimmediate_operand"
> "=d,!u,d,!u,d,ZU,m,*a,*d")
> > +       (match_operand:HI 1 "move_operand"
> "d,J,I,ZU,m,!u,dJ,*d*J,*a"))]
> >    "!TARGET_MIPS16
> >     && (register_operand (operands[0], HImode)
> >         || reg_or_0_operand (operands[1], HImode))"
> >    { return mips_output_move (operands[0], operands[1]); }
> > -  [(set_attr "move_type" "move,const,load,store,mtlo,mflo")
> > +  [(set_attr "move_type"
> "move,const,const,load,load,store,store,mtlo,mflo")
> > +   (set_attr "compression"
> > + "all,micromips,*,micromips,*,micromips,*,*,*")
> >     (set_attr "mode" "HI")])
> 
>  Dumb question: what's the difference between "all" and "*" in the
> compression attribute?
> 
Hi Maciej, 

The port defines the compression and enabled attributes like this:

(define_attr "compression" "none,all,micromips"
  (const_string "none")) 

(define_attr "enabled" "no,yes"
  (if_then_else (ior (eq_attr "compression" "all,none")
                     (and (eq_attr "compression" "micromips")
                          (match_test "TARGET_MICROMIPS")))
                (const_string "yes")
                (const_string "no")))

The "all" setting is used for register-to-register moves where the alternative is compressed if compiling for micromips code or uncompressed otherwise.  
The default ("*") is none meaning this particular alternative will never be compressed.
Catherine




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]