From 97130915859e571fc8eb6e4ff0eab2ad5e737cc9 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Tue, 27 Feb 2007 15:26:19 +0000 Subject: [PATCH] bfin.md (rotl16, [...]): New patterns. * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns. From-SVN: r122377 --- gcc/ChangeLog | 2 ++ gcc/config/bfin/bfin.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b902a029310..a9070cc046f 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 6786902fac5..b65e8dda935 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))