This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [PATCH] [MIPS] Support microMIPS HI/QI moves
- From: "Moore, Catherine" <Catherine_Moore at mentor dot com>
- To: "Rozycki, Maciej" <Maciej_Rozycki at mentor dot com>
- Cc: "rdsandiford at googlemail dot com" <rdsandiford at googlemail dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 22 Apr 2013 21:39:07 +0000
- Subject: RE: [PATCH] [MIPS] Support microMIPS HI/QI moves
- References: <FD3DCEAC5B03E9408544A1E416F11242987BFA71 at NA-MBX-01 dot mgc dot mentorg dot com> <alpine dot DEB dot 1 dot 10 dot 1304222207300 dot 1453 at tp dot orcam dot me dot uk>
> -----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