[i386] : Remove reversed jcc insn patterns

Message ID CAFULd4bOuV1yWwxaKdMFzR3axWLEn32_Rp_buz=RGr76YjfnZA@mail.gmail.com
State New
Headers show
Series
  • [i386] : Remove reversed jcc insn patterns
Related show

Commit Message

Uros Bizjak Oct. 9, 2017, 7:17 p.m.
Hello!

Similar to Segher's rs6000 patch [1], attached patch removes redundant
reversed jcc insn patterns.

2017-10-09  Uros Bizjak  <ubizjak@gmail.com>

    * config/i386/i386.md (*jcc_2): Remove insn pattern.
    (*jcc<mode>_0_r_i387): Ditto.
    (*jccxf_r_i387): Ditto.
    (*jcc<mode>_r_i387): Ditto.
    (*jccu<mode>_r_i387): Ditto.
    (*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
    (*jcc): Rename from *jcc_1.

[1] https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00451.html

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. I have
also compared several Polyhedron asm dumps before and after the patch,
and there were no differences (with -m32 -march=i386, w/ and w/o
-ffast-math).

Committed to mainline SVN.

Uros.

Patch

diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 99497a9..1a794c0 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -11963,7 +11963,7 @@ 
 ;; Basic conditional jump instructions.
 ;; We ignore the overflow flag for signed branch instructions.
 
-(define_insn "*jcc_1"
+(define_insn "*jcc"
   [(set (pc)
 	(if_then_else (match_operator 1 "ix86_comparison_operator"
 				      [(reg FLAGS_REG) (const_int 0)])
@@ -11983,26 +11983,6 @@ 
 	  (const_int 6)))
    (set_attr "maybe_prefix_bnd" "1")])
 
-(define_insn "*jcc_2"
-  [(set (pc)
-	(if_then_else (match_operator 1 "ix86_comparison_operator"
-				      [(reg FLAGS_REG) (const_int 0)])
-		      (pc)
-		      (label_ref (match_operand 0))))]
-  ""
-  "%!%+j%c1\t%l0"
-  [(set_attr "type" "ibr")
-   (set_attr "modrm" "0")
-   (set (attr "length")
-	(if_then_else
-	  (and (ge (minus (match_dup 0) (pc))
-		   (const_int -126))
-	       (lt (minus (match_dup 0) (pc))
-		   (const_int 128)))
-	  (const_int 2)
-	  (const_int 6)))
-   (set_attr "maybe_prefix_bnd" "1")])
-
 ;; In general it is not safe to assume too much about CCmode registers,
 ;; so simplify-rtx stops when it sees a second one.  Under certain
 ;; conditions this is safe on x86, so help combine not create
@@ -12069,19 +12049,6 @@ 
   "TARGET_80387 && !TARGET_CMOVE"
   "#")
 
-(define_insn "*jcc<mode>_0_r_i387"
-  [(set (pc)
-	(if_then_else (match_operator:CCFP 0 "ix86_fp_comparison_operator"
-			[(match_operand:X87MODEF 1 "register_operand" "f")
-			 (match_operand:X87MODEF 2 "const0_operand")])
-	  (pc)
-	  (label_ref (match_operand 3))))
-   (clobber (reg:CCFP FPSR_REG))
-   (clobber (reg:CCFP FLAGS_REG))
-   (clobber (match_scratch:HI 4 "=a"))]
-  "TARGET_80387 && !TARGET_CMOVE"
-  "#")
-
 (define_insn "*jccxf_i387"
   [(set (pc)
 	(if_then_else (match_operator:CCFP 0 "ix86_fp_comparison_operator"
@@ -12095,19 +12062,6 @@ 
   "TARGET_80387 && !TARGET_CMOVE"
   "#")
 
-(define_insn "*jccxf_r_i387"
-  [(set (pc)
-	(if_then_else (match_operator:CCFP 0 "ix86_fp_comparison_operator"
-			[(match_operand:XF 1 "register_operand" "f")
-			 (match_operand:XF 2 "register_operand" "f")])
-	  (pc)
-	  (label_ref (match_operand 3))))
-   (clobber (reg:CCFP FPSR_REG))
-   (clobber (reg:CCFP FLAGS_REG))
-   (clobber (match_scratch:HI 4 "=a"))]
-  "TARGET_80387 && !TARGET_CMOVE"
-  "#")
-
 (define_insn "*jcc<mode>_i387"
   [(set (pc)
 	(if_then_else (match_operator:CCFP 0 "ix86_fp_comparison_operator"
@@ -12121,19 +12075,6 @@ 
   "TARGET_80387 && !TARGET_CMOVE"
   "#")
 
-(define_insn "*jcc<mode>_r_i387"
-  [(set (pc)
-	(if_then_else (match_operator:CCFP 0 "ix86_fp_comparison_operator"
-			[(match_operand:MODEF 1 "register_operand" "f")
-			 (match_operand:MODEF 2 "nonimmediate_operand" "fm")])
-	  (pc)
-	  (label_ref (match_operand 3))))
-   (clobber (reg:CCFP FPSR_REG))
-   (clobber (reg:CCFP FLAGS_REG))
-   (clobber (match_scratch:HI 4 "=a"))]
-  "TARGET_80387 && !TARGET_CMOVE"
-  "#")
-
 (define_insn "*jccu<mode>_i387"
   [(set (pc)
 	(if_then_else (match_operator:CCFPU 0 "ix86_fp_comparison_operator"
@@ -12147,19 +12088,6 @@ 
   "TARGET_80387 && !TARGET_CMOVE"
   "#")
 
-(define_insn "*jccu<mode>_r_i387"
-  [(set (pc)
-	(if_then_else (match_operator:CCFPU 0 "ix86_fp_comparison_operator"
-			[(match_operand:X87MODEF 1 "register_operand" "f")
-			 (match_operand:X87MODEF 2 "register_operand" "f")])
-	  (pc)
-	  (label_ref (match_operand 3))))
-   (clobber (reg:CCFP FPSR_REG))
-   (clobber (reg:CCFP FLAGS_REG))
-   (clobber (match_scratch:HI 4 "=a"))]
-  "TARGET_80387 && !TARGET_CMOVE"
-  "#")
-
 (define_split
   [(set (pc)
 	(if_then_else (match_operator 0 "ix86_fp_comparison_operator"
@@ -12219,23 +12147,6 @@ 
        || optimize_function_for_size_p (cfun))"
   "#")
 
-(define_insn "*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387"
-  [(set (pc)
-	(if_then_else
-	  (match_operator:CCFP 0 "ix86_swapped_fp_comparison_operator"
-	    [(match_operator:X87MODEF 1 "float_operator"
-	      [(match_operand:SWI24 2 "nonimmediate_operand" "m")])
-	     (match_operand:X87MODEF 3 "register_operand" "f")])
-	  (pc)
-	  (label_ref (match_operand 4))))
-   (clobber (reg:CCFP FPSR_REG))
-   (clobber (reg:CCFP FLAGS_REG))
-   (clobber (match_scratch:HI 5 "=a"))]
-  "TARGET_80387 && !TARGET_CMOVE
-   && (TARGET_USE_<SWI24:MODE>MODE_FIOP
-       || optimize_function_for_size_p (cfun))"
-  "#")
-
 (define_split
   [(set (pc)
 	(if_then_else