rs6000.md (bswapsi2): New define_insn and splitter.

2007-02-18  David Edelsohn  <edelsohn@gnu.org>
            Roger Sayle  <roger@eyesopen.com>

        * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.

Co-Authored-By: Roger Sayle <roger@eyesopen.com>

From-SVN: r122104
This commit is contained in:
David Edelsohn 2007-02-18 20:55:31 +00:00 committed by David Edelsohn
parent 61a04b5b59
commit 03f79051ae
2 changed files with 32 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2007-02-18 David Edelsohn <edelsohn@gnu.org>
Roger Sayle <roger@eyesopen.com>
* config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
2007-02-18 Sandra Loosemore <sandra@codesourcery.com>
* calls.c (initialize_argument_information): Pass original EXP

View file

@ -2186,6 +2186,33 @@
DONE;
})
(define_insn "bswapsi2"
[(set (match_operand:SI 0 "reg_or_mem_operand" "=r,Z,&r")
(bswap:SI (match_operand:SI 1 "reg_or_mem_operand" "Z,r,r")))]
""
"@
{lbrx|lwbrx} %0,%y1
{stbrx|stwbrx} %1,%y0
#"
[(set_attr "length" "4,4,12")])
(define_split
[(set (match_operand:SI 0 "gpc_reg_operand" "")
(bswap:SI (match_operand:SI 1 "gpc_reg_operand" "")))]
"reload_completed"
[(set (match_dup 0)
(rotate:SI (match_dup 1) (const_int 8)))
(set (zero_extract:SI (match_dup 0)
(const_int 8)
(const_int 0))
(match_dup 1))
(set (zero_extract:SI (match_dup 0)
(const_int 8)
(const_int 16))
(rotate:SI (match_dup 1)
(const_int 16)))]
"")
(define_expand "mulsi3"
[(use (match_operand:SI 0 "gpc_reg_operand" ""))
(use (match_operand:SI 1 "gpc_reg_operand" ""))