Bernd Schmidt - Blackfin patch: rotate by 16 patterns (original) (raw)
This is the mail archive of the gcc-patches@gcc.gnu.orgmailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
- From: Bernd Schmidt <bernds_cb1 at t-online dot de>
- To: GCC Patches
- Date: Tue, 27 Feb 2007 16:27:24 +0100
- Subject: Blackfin patch: rotate by 16 patterns
Rotate by 16 can be implemented with the PACK instruction on the Blackfin. Committed as 122377.
Bernd
This footer brought to you by insane German lawmakers. Analog Devices GmbH Wilhelm-Wagenfeld-Str. 6 80807 Muenchen Registergericht Muenchen HRB 40368 Geschaeftsfuehrer Thomas Wessel, Vincent Roche, Joseph E. McDonough
Index: ChangeLog
--- ChangeLog (revision 122376) +++ ChangeLog (working copy) @@ -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 schwab@suse.de * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi. Index: config/bfin/bfin.md
--- config/bfin/bfin.md (revision 122374) +++ config/bfin/bfin.md (working copy) @@ -1477,6 +1477,37 @@ (define_insn "ashrsi3" %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))
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |