[NDS32] Add intrinsic functions for unalignment memory access.
authorKito Cheng <kito.cheng@gmail.com>
Sat, 3 Mar 2018 16:38:14 +0000 (16:38 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Sat, 3 Mar 2018 16:38:14 +0000 (16:38 +0000)
commite576ddb5eb9a9101eef5ddf09666bc56274c350a
treedf8092ad7e195b624e1685e1962fc9d8b6cbf9d5
parent7a12ea32b2cf7ee53d0c43e26e12eb41e9853db1
[NDS32] Add intrinsic functions for unalignment memory access.

gcc/
* config/nds32/constants.md (unspec_element): New enum.
* config/nds32/constraints.md (Umw): New constraint.
* config/nds32/nds32-intrinsic.c: Add more builtin functions.
* config/nds32/nds32-intrinsic.md: Likewise.
* config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
(nds32_valid_smw_lwm_base_p): New.
(nds32_output_smw_single_word): New.
(nds32_output_lmw_single_word): New.
(nds32_expand_unaligned_load): New.
(nds32_expand_unaligned_store): New.
* config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
(nds32_output_smw_single_word): Declare.
(nds32_output_lmw_single_word): Declare.
(nds32_expand_unaligned_load): Declare.
(nds32_expand_unaligned_store): Declare.
* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
NDS32_BUILTIN_UASTORE_DW.
* config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
predicate.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Monk Chiang <sh.chiang04@gmail.com>
From-SVN: r258214
gcc/ChangeLog
gcc/config/nds32/constants.md
gcc/config/nds32/constraints.md
gcc/config/nds32/nds32-intrinsic.c
gcc/config/nds32/nds32-intrinsic.md
gcc/config/nds32/nds32-md-auxiliary.c
gcc/config/nds32/nds32-protos.h
gcc/config/nds32/nds32.h
gcc/config/nds32/predicates.md