cris: Enable extend operations to SImode to set condition codes.
authorHans-Peter Nilsson <hp@axis.com>
Fri, 31 Jan 2020 07:24:43 +0000 (08:24 +0100)
committerHans-Peter Nilsson <hp@axis.com>
Sat, 9 May 2020 02:08:47 +0000 (04:08 +0200)
Enable dropping of compares with zero of the result, through the
three CCmode substitutions and the cmpelim pass.

gcc:
* config/cris/cris.md
("<acc><anz><anzvc>extend<mode>si2<setcc><setnz><setnzvc>"):
Rename from "extend<mode>si2".
("<acc><anz><anzvc>zero_extend<mode>si2<setcc><setnz><setnzvc>"):
Similar, from "zero_extend<mode>si2".

gcc/ChangeLog
gcc/config/cris/cris.md

index 22178ad52ceb17cde2666ed5782a4ca5758661cb..f0800fe1b193b66d516034c175e1146401e1d008 100644 (file)
        ("*b<zcond:code><mode>"): Rename from "b<zcond:code><mode>".
        ("*b<nzvccond:code><mode>"): Rename from "b<nzvccond:code><mode>".
        ("*b<rnzcond:code><mode>"): Rename from "*b<rnzcond:code><mode>".
+       ("<acc><anz><anzvc>extend<mode>si2<setcc><setnz><setnzvc>"):
+       Rename from "extend<mode>si2".
+       ("<acc><anz><anzvc>zero_extend<mode>si2<setcc><setnz><setnzvc>"):
+       Similar, from "zero_extend<mode>si2".
 
 2020-05-08  Vladimir Makarov  <vmakarov@redhat.com>
 
index 5f77bc9e0fd35a7491f6ae50b7366d88d589081e..2f3f328f5c5a9e33de5eed320f8e3a221026f191 100644 (file)
   ""
   "movs<m> %1,%M0\;smi %H0\;neg.d %H0,%H0")
 
-(define_insn "extend<mode>si2"
+(define_insn "<acc><anz><anzvc>extend<mode>si2<setcc><setnz><setnzvc>"
   [(set (match_operand:SI 0 "register_operand" "=r,r,r")
        (sign_extend:SI (match_operand:BW 1 "general_operand" "r,Q>,g")))
    (clobber (reg:CC CRIS_CC0_REGNUM))]
 ;; Zero-extend.  The DImode ones are synthesized by gcc, so we don't
 ;; specify them here.
 
-(define_insn "zero_extend<mode>si2"
+(define_insn "<acc><anz><anzvc>zero_extend<mode>si2<setcc><setnz><setnzvc>"
   [(set (match_operand:SI 0 "register_operand" "=r,r,r")
        (zero_extend:SI
         (match_operand:BW 1 "nonimmediate_operand" "r,Q>,m")))