aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-12-11 07:05:02 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-12-11 07:05:02 -0500
commit8b4a434166512309c0ad08af2dc70bc0e18eed74 (patch)
treee56d10b6494193b6a8146fd5708720b437380d95 /gcc
parent7df83bcec6fa04b6de733a9a36c3038bc4de589a (diff)
downloadgcc-8b4a434166512309c0ad08af2dc70bc0e18eed74.zip
gcc-8b4a434166512309c0ad08af2dc70bc0e18eed74.tar.gz
gcc-8b4a434166512309c0ad08af2dc70bc0e18eed74.tar.bz2
(modsi3): Move test of exact_log2 into extra condition.
From-SVN: r6205
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md9
1 files changed, 3 insertions, 6 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index a36623a..bb719a5 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -765,18 +765,15 @@
[(use (match_operand:SI 0 "gpc_reg_operand" ""))
(use (match_operand:SI 1 "gpc_reg_operand" ""))
(use (match_operand:SI 2 "const_int_operand" ""))]
- ""
+ "exact_log2 (INTVAL (operands[2])) >= 0"
"
{
- int i = exact_log2 (INTVAL (operands[2]));
rtx temp1 = gen_reg_rtx (SImode);
rtx temp2 = gen_reg_rtx (SImode);
- if (i < 0)
- FAIL;
-
emit_insn (gen_divsi3 (temp1, operands[1], operands[2]));
- emit_insn (gen_ashlsi3 (temp2, temp1, GEN_INT (i)));
+ emit_insn (gen_ashlsi3 (temp2, temp1,
+ GEN_INT (exact_log2 (INTVAL (operands[2])))));
emit_insn (gen_subsi3 (operands[0], operands[1], temp2));
DONE;