diff options
author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-06 22:26:59 +0000 |
---|---|---|
committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-06 22:26:59 +0000 |
commit | 8f27db36d31929f99df6efe403a9a0eed7394309 (patch) | |
tree | 3a05faf7b9080efca625adaf398cfa8d28c0dd32 /gcc/config/arc/arc.c | |
parent | b2a02a0e4031d2c345354492f3c33a879b495ca7 (diff) | |
download | gcc-8f27db36d31929f99df6efe403a9a0eed7394309.tar.gz |
2005-09-06 Saurabh Verma <saurabh.verma@codito.com>
PR target/8972
* config/arc/arc.c (output_shift): Add check for loop count when
optimizing.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103971 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arc/arc.c')
-rw-r--r-- | gcc/config/arc/arc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 2adf01d0d61..6d8666e4c8f 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -1494,7 +1494,11 @@ output_shift (rtx *operands) if (GET_CODE (operands[2]) != CONST_INT) { if (optimize) - output_asm_insn ("mov lp_count,%2", operands); + { + output_asm_insn ("sub.f 0,%2,0", operands); + output_asm_insn ("mov lp_count,%2", operands); + output_asm_insn ("bz 2f", operands); + } else output_asm_insn ("mov %4,%2", operands); goto shiftloop; @@ -1568,6 +1572,8 @@ output_shift (rtx *operands) fprintf (asm_out_file, "1:\t%s single insn loop\n", ASM_COMMENT_START); output_asm_insn (shift_one, operands); + fprintf (asm_out_file, "2:\t%s end single insn loop\n", + ASM_COMMENT_START); } else { |