[NDS32] Optimize movmem and setmem operations.
authorMonk Chiang <sh.chiang04@gmail.com>
Sun, 27 May 2018 16:18:24 +0000 (16:18 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Sun, 27 May 2018 16:18:24 +0000 (16:18 +0000)
commit8889fbe5424f437f504901a659ebcc772066a478
tree7a29d461fbb70054bce48b789e09a4a04a4a3a53
parent0be3bad7054256f009a066cce34b4cca12f3b86f
[NDS32] Optimize movmem and setmem operations.

gcc/
* config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
implementation.
(unaligned_store_dw): Ditto.
* config/nds32/nds32-memory-manipulation.c
(nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
(nds32_gen_dup_4_byte_to_word_value): Rename to ...
(nds32_gen_dup_4_byte_to_word_value_aux): ... this.
(emit_setmem_word_loop): Rename to ...
(emit_setmem_doubleword_loop): ... this.
(nds32_gen_dup_4_byte_to_word_value): New function.
(nds32_gen_dup_8_byte_to_double_word_value): New function.
(nds32_expand_setmem_loop): Refine implementation.
(nds32_expand_setmem_loop_v3m): Ditto.
* config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
pattern.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
From-SVN: r260805
gcc/ChangeLog
gcc/config/nds32/nds32-intrinsic.md
gcc/config/nds32/nds32-memory-manipulation.c
gcc/config/nds32/nds32-multiple.md