diff options
author | Torbjorn Granlund <tege@gnu.org> | 1996-10-16 08:17:32 +0000 |
---|---|---|
committer | Torbjorn Granlund <tege@gnu.org> | 1996-10-16 08:17:32 +0000 |
commit | 4801403e107d8c28757aa661f4ababc6b2fb7bf7 (patch) | |
tree | 6f1bc9dad7ae68ec7f27954e07e205d37ebd7036 /gcc | |
parent | 293a36ebf10d89b7bc994e18a4d01b84b6eb91b7 (diff) | |
download | gcc-4801403e107d8c28757aa661f4ababc6b2fb7bf7.zip gcc-4801403e107d8c28757aa661f4ababc6b2fb7bf7.tar.gz gcc-4801403e107d8c28757aa661f4ababc6b2fb7bf7.tar.bz2 |
(parallel inc/dec and branch-if-zero/nonzero): 4 new patterns.
From-SVN: r12968
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/i386.md | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 341f100..524877d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5725,6 +5725,74 @@ return AS1 (%J0,%l3); }") +(define_insn "" + [(set (pc) + (if_then_else (ne (match_operand:SI 0 "general_operand" "g") + (const_int 0)) + (label_ref (match_operand 1 "" "")) + (pc))) + (set (match_dup 0) + (plus:SI (match_dup 0) + (const_int -1)))] + "" + "* +{ + operands[2] = const1_rtx; + output_asm_insn (AS2 (sub%L0,%2,%0), operands); + return \"jnc %l1\"; +}") + +(define_insn "" + [(set (pc) + (if_then_else (eq (match_operand:SI 0 "general_operand" "g") + (const_int 0)) + (label_ref (match_operand 1 "" "")) + (pc))) + (set (match_dup 0) + (plus:SI (match_dup 0) + (const_int -1)))] + "" + "* +{ + operands[2] = const1_rtx; + output_asm_insn (AS2 (sub%L0,%2,%0), operands); + return \"jc %l1\"; +}") + +(define_insn "" + [(set (pc) + (if_then_else (ne (match_operand:SI 0 "general_operand" "g") + (const_int 0)) + (label_ref (match_operand 1 "" "")) + (pc))) + (set (match_dup 0) + (plus:SI (match_dup 0) + (const_int 1)))] + "" + "* +{ + operands[2] = const1_rtx; + output_asm_insn (AS2 (add%L0,%2,%0), operands); + return \"jnc %l1\"; +}") + +(define_insn "" + [(set (pc) + (if_then_else (eq (match_operand:SI 0 "general_operand" "g") + (const_int 0)) + (label_ref (match_operand 1 "" "")) + (pc))) + (set (match_dup 0) + (plus:SI (match_dup 0) + (const_int 1)))] + "" + "* +{ + operands[2] = const1_rtx; + output_asm_insn (AS2 (add%L0,%2,%0), operands); + return \"jc %l1\"; +}") + ;; Implement switch statements when generating PIC code. Switches are ;; implemented by `tablejump' when not using -fpic. |