diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2008-09-20 15:07:46 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2008-09-20 08:07:46 -0700 |
commit | 5a73c47600fb8a457765c4a7ece48828004f975e (patch) | |
tree | 92080d52ab42d0e5300b6dbffce5e0a03eac667c /gcc/config | |
parent | 7fda15966e1c2f6613cef8c30c26cc05dba2e590 (diff) | |
download | gcc-5a73c47600fb8a457765c4a7ece48828004f975e.zip gcc-5a73c47600fb8a457765c4a7ece48828004f975e.tar.gz gcc-5a73c47600fb8a457765c4a7ece48828004f975e.tar.bz2 |
re PR target/37571 (Performance regression due to compare/branch fuse optimization)
2008-09-20 H.J. Lu <hongjiu.lu@intel.com>
PR target/37571
* config/i386/i386.md (*jcc_fused_1): Removed.
(*jcc_fused_2): Likewise.
(*jcc_fused_3): Likewise.
(*jcc_fused_4): Likewise.
From-SVN: r140514
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.md | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 66d1866..de58df3 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -14267,76 +14267,6 @@ (const_int 2) (const_int 6)))]) -;; ??? Handle alignment requirements for compare and branch fused macro-op; -;; the branch instruction does not start at a 16-byte boundary or cross -;; a 16-byte boundary. - -(define_insn "*jcc_fused_1" - [(set (pc) - (if_then_else (match_operator 1 "comparison_operator" - [(match_operand:SWI32 2 "register_operand" "<r>") - (match_operand:SWI32 3 "const0_operand" "")]) - (label_ref (match_operand 0 "" "")) - (pc)))] - "TARGET_FUSE_CMP_AND_BRANCH && !TARGET_64BIT" -{ - return "test{<imodesuffix>}\t%2, %2\n\t" - "%+j%E1\t%l0\t" ASM_COMMENT_START " fused"; -} - [(set_attr "type" "multi") - (set_attr "mode" "<MODE>")]) - -(define_insn "*jcc_fused_2" - [(set (pc) - (if_then_else (match_operator 1 "comparison_operator" - [(match_operand:SWI32 2 "register_operand" "<r>") - (match_operand:SWI32 3 "const0_operand" "")]) - (pc) - (label_ref (match_operand 0 "" ""))))] - "TARGET_FUSE_CMP_AND_BRANCH && !TARGET_64BIT" -{ - return "test{<imodesuffix>}\t%2, %2\n\t" - "%+j%e1\t%l0\t" ASM_COMMENT_START " fused"; -} - [(set_attr "type" "multi") - (set_attr "mode" "<MODE>")]) - -(define_insn "*jcc_fused_3" - [(set (pc) - (if_then_else - (match_operator 1 "ix86_comparison_uns_operator" - [(match_operand:SWI32 2 "nonimmediate_operand" "<r>,m,<r>") - (match_operand:SWI32 3 "<general_operand>" "<r><i>,<r>,m")]) - (label_ref (match_operand 0 "" "")) - (pc)))] - "TARGET_FUSE_CMP_AND_BRANCH && !TARGET_64BIT - && !(MEM_P (operands[2]) - && (MEM_P (operands[3]) || CONST_INT_P (operands[3])))" -{ - return "cmp{<imodesuffix>}\t{%3, %2|%2, %3}\n\t" - "%+j%E1\t%l0\t" ASM_COMMENT_START " fused"; -} - [(set_attr "type" "multi") - (set_attr "mode" "<MODE>")]) - -(define_insn "*jcc_fused_4" - [(set (pc) - (if_then_else - (match_operator 1 "ix86_comparison_uns_operator" - [(match_operand:SWI32 2 "nonimmediate_operand" "<r>,m,<r>") - (match_operand:SWI32 3 "<general_operand>" "<r><i>,<r>,m")]) - (pc) - (label_ref (match_operand 0 "" ""))))] - "TARGET_FUSE_CMP_AND_BRANCH && !TARGET_64BIT - && !(MEM_P (operands[2]) - && (MEM_P (operands[3]) || CONST_INT_P (operands[3])))" -{ - return "cmp{<imodesuffix>}\t{%3, %2|%2, %3}\n\t" - "%+j%e1\t%l0\t" ASM_COMMENT_START " fused"; -} - [(set_attr "type" "multi") - (set_attr "mode" "<MODE>")]) - ;; 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 |