i386.md (*jcc_1): Use %!
authorUros Bizjak <ubizjak@gmail.com>
Mon, 29 Jun 2015 17:18:17 +0000 (19:18 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 29 Jun 2015 17:18:17 +0000 (19:18 +0200)
* config/i386/i386.md (*jcc_1): Use %! in asm template.
Set attribute "length_nobnd" instead of "length".
(*jcc_2): Ditto.
(jump): Ditto.
(*jcc_1_bnd, *jcc_2_bnd, jump_bnd): Remove insn patterns.

From-SVN: r225138

gcc/ChangeLog
gcc/config/i386/i386.md

index 66de8dd8e18701299b99201d59df817706a5f85c..a14bb044b9e835e112ae6df28d68d9f121f31f68 100644 (file)
@@ -1,3 +1,11 @@
+2015-06-29  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (*jcc_1): Use %! in asm template.
+       Set attribute "length_nobnd" instead of "length".
+       (*jcc_2): Ditto.
+       (jump): Ditto.
+       (*jcc_1_bnd, *jcc_2_bnd, jump_bnd): Remove insn patterns.
+
 2015-06-29  Sandra Loosemore  <sandra@codesourcery.com>
 
        * config/nios2/nios2.c (nios2_delegitimize_address): Make
index 25935818ac9618337aa0e9988a3565fd503b64ec..ff7baa4b66fddb6499fc6e33605cf86262ef89ac 100644 (file)
 ;; Basic conditional jump instructions.
 ;; We ignore the overflow flag for signed branch instructions.
 
-(define_insn "*jcc_1_bnd"
-  [(set (pc)
-       (if_then_else (match_operator 1 "ix86_comparison_operator"
-                                     [(reg FLAGS_REG) (const_int 0)])
-                     (label_ref (match_operand 0))
-                     (pc)))]
-  "TARGET_MPX && ix86_bnd_prefixed_insn_p (insn)"
-  "bnd %+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 3)
-            (const_int 7)))])
-
 (define_insn "*jcc_1"
   [(set (pc)
        (if_then_else (match_operator 1 "ix86_comparison_operator"
                      (label_ref (match_operand 0))
                      (pc)))]
   ""
-  "%+j%C1\t%l0"
+  "%!%+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)))])
-
-(define_insn "*jcc_2_bnd"
-  [(set (pc)
-       (if_then_else (match_operator 1 "ix86_comparison_operator"
-                                     [(reg FLAGS_REG) (const_int 0)])
-                     (pc)
-                     (label_ref (match_operand 0))))]
-  "TARGET_MPX && ix86_bnd_prefixed_insn_p (insn)"
-  "bnd %+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 3)
-            (const_int 7)))])
+   (set (attr "length_nobnd")
+       (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)))])
 
 (define_insn "*jcc_2"
   [(set (pc)
                      (pc)
                      (label_ref (match_operand 0))))]
   ""
-  "%+j%c1\t%l0"
+  "%!%+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 "length_nobnd")
+       (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)))])
 
 ;; 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
 \f
 ;; Unconditional and other jump instructions
 
-(define_insn "jump_bnd"
-  [(set (pc)
-       (label_ref (match_operand 0)))]
-  "TARGET_MPX && ix86_bnd_prefixed_insn_p (insn)"
-  "bnd jmp\t%l0"
-  [(set_attr "type" "ibr")
-   (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 3)
-            (const_int 6)))
-   (set_attr "modrm" "0")])
-
 (define_insn "jump"
   [(set (pc)
        (label_ref (match_operand 0)))]
   ""
-  "jmp\t%l0"
+  "%!jmp\t%l0"
   [(set_attr "type" "ibr")
-   (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 5)))
-   (set_attr "modrm" "0")])
+   (set_attr "modrm" "0")
+   (set (attr "length_nobnd")
+       (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 5)))])
 
 (define_expand "indirect_jump"
   [(set (pc) (match_operand 0 "indirect_branch_operand"))]