summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-29 17:18:17 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2015-06-29 17:18:17 +0000
commit602bd329fa132b6caa9a9fc41f53cb30d62b316e (patch)
tree93e7e89918ec257c0ae4c64101f002a66300cda4
parent6eb777bd8435d0687732603ca88eea9630a11e26 (diff)
downloadgcc-602bd329fa132b6caa9a9fc41f53cb30d62b316e.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@225138 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.md104
2 files changed, 36 insertions, 76 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 66de8dd8e18..a14bb044b9e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 25935818ac9..ff7baa4b66f 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -10948,24 +10948,6 @@
;; 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"
@@ -10973,34 +10955,17 @@
(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)
@@ -11009,16 +10974,17 @@
(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
@@ -11452,35 +11418,21 @@
;; 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"))]