rs6000.md (cmpmemsi): New define_expand.
authorAaron Sawdey <acsawdey@gcc.gnu.org>
Fri, 23 Sep 2016 20:34:26 +0000 (15:34 -0500)
committerAaron Sawdey <acsawdey@gcc.gnu.org>
Fri, 23 Sep 2016 20:34:26 +0000 (15:34 -0500)
commit9f38dde2306d9a482c03eeaa59688a30d566c8ff
tree4514af28159ac075418201ffbb487eabd38c5dc8
parent90ef45cb310be06c0cdb1a0e36ee73a2db96a6e2
rs6000.md (cmpmemsi): New define_expand.

* config/rs6000/rs6000.md (cmpmemsi): New define_expand.
* config/rs6000/rs6000.c (expand_block_compare): New function used by
cmpmemsi pattern to do builtin expansion of memcmp ().
(compute_current_alignment): Add helper function for
expand_block_compare used to compute alignment as the compare proceeds.
(select_block_compare_mode): Used by expand_block_compare to select
the mode used for reading the next chunk of bytes in the compare.
(do_load_for_compare): Used by expand_block_compare to emit the load
insns for the compare.
(rs6000_emit_dot_insn): Moved this function to avoid a forward
reference from expand_block_compare ().
* config/rs6000/rs6000-protos.h (expand_block_compare): Add a
prototype for this function.
* config/rs6000/rs6000.opt (mblock-compare-inline-limit): Add a new
target option for controlling how much code inline expansion of
memcmp() will be allowed to generate.

From-SVN: r240455
gcc/config/rs6000/rs6000-protos.h
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/rs6000.opt