From: Bernd Schmidt Date: Tue, 27 Feb 2007 15:26:19 +0000 (+0000) Subject: bfin.md (rotl16, [...]): New patterns. X-Git-Tag: releases/gcc-4.3.0~6572 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=97130915859e571fc8eb6e4ff0eab2ad5e737cc9;p=thirdparty%2Fgcc.git bfin.md (rotl16, [...]): New patterns. * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns. From-SVN: r122377 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b902a0293107..a9070cc046fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -46,6 +46,8 @@ * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg instead of R2. + * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns. + 2007-02-27 Andreas Schwab * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi. diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md index 6786902fac5d..b65e8dda9357 100644 --- a/gcc/config/bfin/bfin.md +++ b/gcc/config/bfin/bfin.md @@ -1477,6 +1477,37 @@ %0 = %1 >>> %2%!" [(set_attr "type" "shft,dsp32")]) +(define_insn "rotl16" + [(set (match_operand:SI 0 "register_operand" "=d") + (rotate:SI (match_operand:SI 1 "register_operand" "d") + (const_int 16)))] + "" + "%0 = PACK (%h1, %d1)%!" + [(set_attr "type" "dsp32")]) + +(define_expand "rotlsi3" + [(set (match_operand:SI 0 "register_operand" "") + (rotate:SI (match_operand:SI 1 "register_operand" "") + (match_operand:SI 2 "immediate_operand" "")))] + "" +{ + if (INTVAL (operands[2]) != 16) + FAIL; +}) + +(define_expand "rotrsi3" + [(set (match_operand:SI 0 "register_operand" "") + (rotatert:SI (match_operand:SI 1 "register_operand" "") + (match_operand:SI 2 "immediate_operand" "")))] + "" +{ + if (INTVAL (operands[2]) != 16) + FAIL; + emit_insn (gen_rotl16 (operands[0], operands[1])); + DONE; +}) + + (define_insn "ror_one" [(set (match_operand:SI 0 "register_operand" "=d") (ior:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "d") (const_int 1))