Ping? Patch is attached for easy to apply.
Move the cstorecc4 pattern from "[PATCH, 10/10] aarch64: Handle ccmp in ifcvt to make it work with cmov" to this patch, since cmov optimization does not depend on that patch. Thanks! -Zhenqiang ChangeLog: 2014-09-23 Zhenqiang Chen <zhenqiang.c...@linaro.org> * config/aarch64/aarch64.md (cbranchcc4, *ccmp_and, *ccmp_ior, cstorecc4): New. > -----Original Message----- > From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > ow...@gcc.gnu.org] On Behalf Of Zhenqiang Chen > Sent: Monday, June 23, 2014 3:01 PM > To: gcc-patches@gcc.gnu.org > Subject: [PATCH, 8/10] aarch64: ccmp insn patterns > > Hi, > > The patch adds two insn patterns for ccmp instructions. > > cbranchcc4 is introduced to generate optimized conditional branch without > an additional compare against the result of ccmp. > > OK for trunk? > > Thanks! > -Zhenqiang > > ChangeLog: > 2014-06-23 Zhenqiang Chen <zhenqiang.c...@linaro.org> > > * config/aarch64/aarch64.md (cbranchcc4): New. > (*ccmp_and, *ccmp_ior): New. > > diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md > index a4d8887..c25d940 100644 > --- a/gcc/config/aarch64/aarch64.md > +++ b/gcc/config/aarch64/aarch64.md > @@ -230,6 +230,52 @@ > " > ) > +(define_expand "cbranchcc4" > + [(set (pc) (if_then_else > + (match_operator 0 "aarch64_comparison_operator" > + [(match_operand 1 "cc_register" "") > + (const_int 0)]) > + (label_ref (match_operand 3 "" "")) > + (pc)))] > + "" > + " ") > + > +(define_insn "*ccmp_and" > + [(set (match_operand 6 "ccmp_cc_register" "") > + (compare > + (and:SI > + (match_operator 4 "aarch64_comparison_operator" > + [(match_operand 0 "ccmp_cc_register" "") > + (match_operand 1 "aarch64_plus_operand" "")]) > + (match_operator 5 "aarch64_comparison_operator" > + [(match_operand:GPI 2 "register_operand" "r,r,r") > + (match_operand:GPI 3 "aarch64_ccmp_operand" "r,Uss,Usn")])) > + (const_int 0)))] > + "" > + { > + return aarch64_output_ccmp (operands, true, which_alternative); > + } > + [(set_attr "type" "alus_reg,alus_imm,alus_imm")] > +) > + > +(define_insn "*ccmp_ior" > + [(set (match_operand 6 "ccmp_cc_register" "") > + (compare > + (ior:SI > + (match_operator 4 "aarch64_comparison_operator" > + [(match_operand 0 "ccmp_cc_register" "") > + (match_operand 1 "aarch64_plus_operand" "")]) > + (match_operator 5 "aarch64_comparison_operator" > + [(match_operand:GPI 2 "register_operand" "r,r,r") > + (match_operand:GPI 3 "aarch64_ccmp_operand" "r,Uss,Usn")])) > + (const_int 0)))] > + "" > + { > + return aarch64_output_ccmp (operands, false, which_alternative); > + } > + [(set_attr "type" "alus_reg,alus_imm,alus_imm")] > +) > + > (define_insn "*condjump" > [(set (pc) (if_then_else (match_operator 0 > "aarch64_comparison_operator" > [(match_operand 1 "cc_register" "") (const_int 0)]) > 57,1
8-patterns.patch
Description: Binary data