diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 2000-07-25 22:10:38 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2000-07-25 23:10:38 +0100 |
commit | 1987b7bcf6d442e3bdbeab09157f4cb670e9b38a (patch) | |
tree | a410a85c383837a53e5115dd4a1d8e13fe9161e7 /gcc | |
parent | bc013f005fb9d4315225ccdd1f5d80c93ffb250b (diff) | |
download | gcc-1987b7bcf6d442e3bdbeab09157f4cb670e9b38a.zip gcc-1987b7bcf6d442e3bdbeab09157f4cb670e9b38a.tar.gz gcc-1987b7bcf6d442e3bdbeab09157f4cb670e9b38a.tar.bz2 |
sh.md (cmpgtdi_t): Must be split.
* sh.md (cmpgtdi_t): Must be split.
(cmpgtdi_t+1): New splitter.
From-SVN: r35257
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 34 |
2 files changed, 32 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 90527ac..346c8f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Jul 25 23:08:33 2000 J"orn Rennecke <amylaar@cygnus.co.uk> + + * sh.md (cmpgtdi_t): Must be split. + (cmpgtdi_t+1): New splitter. + 2000-07-25 Zack Weinberg <zack@wolery.cumb.org> * cpplib.c (_cpp_check_directive): Issue -Wtraditional diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 49631d3..5e73c1f 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -627,16 +627,36 @@ [(set (reg:SI 18) (eq:SI (match_operand:DI 0 "arith_reg_operand" "r,r") (match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))] "" - "* - return output_branchy_insn - (EQ, - (which_alternative - ? \"cmp/eq\\t%S1,%S0\;bf\\t%l9\;cmp/eq\\t%R1,%R0\" - : \"tst\\t%S0,%S0\;bf\\t%l9\;tst\\t%R0,%R0\"), - insn, operands);" + "#" [(set_attr "length" "6") (set_attr "type" "arith3b")]) +(define_split + [(set (reg:SI 18) (eq:SI (match_operand:DI 0 "arith_reg_operand" "r,r") + (match_operand:DI 1 "arith_reg_or_0_operand" "N,r")))] + "reload_completed" + [(set (reg:SI 18) (eq:SI (match_dup 2) (match_dup 3))) + (set (pc) (if_then_else (ne (reg:SI 18) (const_int 0)) + (label_ref (match_dup 6)) + (pc))) + (set (reg:SI 18) (eq:SI (match_dup 4) (match_dup 5))) + (match_dup 6)] + " +{ + operands[2] + = gen_rtx_REG (SImode, + true_regnum (operands[0]) + (TARGET_LITTLE_ENDIAN ? 1 : 0)); + operands[3] + = (operands[1] == const0_rtx + ? const0_rtx + : gen_rtx_REG (SImode, + true_regnum (operands[1]) + + (TARGET_LITTLE_ENDIAN ? 1 : 0))); + operands[4] = gen_lowpart (SImode, operands[0]); + operands[5] = gen_lowpart (SImode, operands[1]); + operands[6] = gen_label_rtx (); +}") + (define_insn "cmpgtdi_t" [(set (reg:SI 18) (gt:SI (match_operand:DI 0 "arith_reg_operand" "r,r") (match_operand:DI 1 "arith_reg_or_0_operand" "r,N")))] |