diff options
author | Pan Li <pan2.li@intel.com> | 2024-10-23 16:24:19 +0800 |
---|---|---|
committer | Pan Li <pan2.li@intel.com> | 2024-10-29 22:19:19 +0800 |
commit | 1fdee26ee985385c8043ea0ca6ff05ffdbc34f9c (patch) | |
tree | 6aa246d8c805bb7d64f946cedf485983782def3d /gcc/fortran | |
parent | 4cfff6d413b15b38827494bb317867d86f997350 (diff) | |
download | gcc-1fdee26ee985385c8043ea0ca6ff05ffdbc34f9c.zip gcc-1fdee26ee985385c8043ea0ca6ff05ffdbc34f9c.tar.gz gcc-1fdee26ee985385c8043ea0ca6ff05ffdbc34f9c.tar.bz2 |
Internal-fn: Introduce new IFN MASK_LEN_STRIDED_LOAD{STORE}
This patch would like to introduce new IFN for strided load and store.
LOAD: v = MASK_LEN_STRIDED_LOAD (ptr, stride, mask, len, bias)
STORE: MASK_LEN_STRIED_STORE (ptr, stride, v, mask, len, bias)
The IFN target below code example similar as below
void foo (int * a, int * b, int stride, int n)
{
for (int i = 0; i < n; i++)
a[i * stride] = b[i * stride];
}
The below test suites are passed for this patch.
* The rv64gcv fully regression test.
* The x86 bootstrap test.
* The x86 fully regression test.
gcc/ChangeLog:
* internal-fn.cc (strided_load_direct): Add new define direct
for strided load.
(strided_store_direct): Ditto but for store.
(expand_strided_load_optab_fn): Add new func to expand the IFN
MASK_LEN_STRIDED_LOAD in middle-end.
(expand_strided_store_optab_fn): Ditto but for store.
(direct_strided_load_optab_supported_p): Add define for stride
load optab supported.
(direct_strided_store_optab_supported_p): Ditto but for store.
(internal_fn_len_index): Add strided load/store len index.
(internal_fn_mask_index): Ditto but for mask.
(internal_fn_stored_value_index): Add strided store value index.
* internal-fn.def (MASK_LEN_STRIDED_LOAD): Add new IFN for
strided load.
(MASK_LEN_STRIDED_STORE): Ditto but for store.
* optabs.def (mask_len_strided_load_optab): Add strided load optab.
(mask_len_strided_store_optab): Add strided store optab.
Signed-off-by: Pan Li <pan2.li@intel.com>
Co-Authored-By: Juzhe-Zhong <juzhe.zhong@rivai.ai>
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions