From 4aa74a4f5a2aebebb737782172d4ce0398f72970 Mon Sep 17 00:00:00 2001 From: Franz Sirl Date: Sun, 19 May 2002 17:10:49 +0000 Subject: [PATCH] rs6000.md (ashrdi3_no_power): New. 2002-05-19 Franz Sirl * config/rs6000/rs6000.md (ashrdi3_no_power): New. (ashrdi3): Use it. From-SVN: r53634 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.md | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5d6d856ee5..96e6199a073 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-05-19 Franz Sirl + + * config/rs6000/rs6000.md (ashrdi3_no_power): New. + (ashrdi3): Use it. + 2002-05-18 Mark Mitchell * configure.in (AC_CHECK_FUNCS): Add checks for scandir and diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 793d21fafc2..3c437da3f2b 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -5781,6 +5781,16 @@ {srai|srawi} %0,%1,31\;{srai|srawi} %L0,%1,%h2 sraiq %0,%1,%h2\;srliq %L0,%L1,%h2" [(set_attr "length" "8")]) + +(define_insn "ashrdi3_no_power" + [(set (match_operand:DI 0 "gpc_reg_operand" "=&r,&r") + (ashiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "r,r") + (match_operand:SI 2 "const_int_operand" "M,i")))] + "TARGET_32BIT && !TARGET_POWER" + "@ + {srai|srawi} %0,%1,31\;{srai|srawi} %L0,%1,%h2 + {sri|srwi} %L0,%L1,%h2\;insrwi %L0,%1,%h2,0\;{srai|srawi} %0,%1,%h2" + [(set_attr "length" "8,12")]) ;; PowerPC64 DImode operations. @@ -6990,7 +7000,7 @@ [(set (match_operand:DI 0 "gpc_reg_operand" "") (ashiftrt:DI (match_operand:DI 1 "gpc_reg_operand" "") (match_operand:SI 2 "reg_or_cint_operand" "")))] - "TARGET_POWERPC64 || TARGET_POWER" + "" " { if (TARGET_POWERPC64) @@ -7000,6 +7010,11 @@ emit_insn (gen_ashrdi3_power (operands[0], operands[1], operands[2])); DONE; } + else if (TARGET_32BIT && GET_CODE (operands[2]) == CONST_INT) + { + emit_insn (gen_ashrdi3_no_power (operands[0], operands[1], operands[2])); + DONE; + } else FAIL; }") -- 2.30.2