From 94f11af109ae0862ffd6eb16309ddea8b5c8e1a9 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 29 Jun 2015 19:18:17 +0200 Subject: [PATCH] i386.md (*jcc_1): Use %! * 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 | 8 ++++ gcc/config/i386/i386.md | 104 +++++++++++----------------------------- 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 + + * 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 * 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"))] -- 2.30.2