已合并
add memory base capi #744
chenkunjie创建于 3月5日
add memory base capi #744
已合并
共 38 个文件变更+5674-210
| @@ -1047,6 +1047,30 @@ __aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, bfloat16_t val | |||
| 1047 | { | 1047 | { |
| 1048 | asc_fill_l1_sync_impl(dst, value, config); | 1048 | asc_fill_l1_sync_impl(dst, value, config); |
| 1049 | } | 1049 | } |
| 1050 | + | ||
| 1051 | +__aicore__ inline void asc_fill_l1(__cbuf__ bfloat16_t* dst, half value, | ||
| 1052 | + const asc_fill_value_config& config) | ||
| 1053 | +{ | ||
| 1054 | + asc_fill_l1_impl(dst, value, config); | ||
| 1055 | +} | ||
| 1056 | + | ||
| 1057 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, half value, | ||
| 1058 | + const asc_fill_value_config& config) | ||
| 1059 | +{ | ||
| 1060 | + asc_fill_l1_sync_impl(dst, value, config); | ||
| 1061 | +} | ||
| 1062 | + | ||
| 1063 | +__aicore__ inline void asc_fill_l1(__cbuf__ bfloat16_t* dst, uint32_t value, | ||
| 1064 | + const asc_fill_value_config& config) | ||
| 1065 | +{ | ||
| 1066 | + asc_fill_l1_impl(dst, value, config); | ||
| 1067 | +} | ||
| 1068 | + | ||
| 1069 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, uint32_t value, | ||
| 1070 | + const asc_fill_value_config& config) | ||
| 1071 | +{ | ||
| 1072 | + asc_fill_l1_sync_impl(dst, value, config); | ||
| 1073 | +} | ||
| 1050 | // ==========asc_copy_l12l0b_trans========= | 1074 | // ==========asc_copy_l12l0b_trans========= |
| 1051 | __aicore__ inline void asc_copy_l12l0b_trans(__cb__ half* dst, __cbuf__ half* src, uint16_t index_id, uint8_t repeat, | 1075 | __aicore__ inline void asc_copy_l12l0b_trans(__cb__ half* dst, __cbuf__ half* src, uint16_t index_id, uint8_t repeat, |
| 1052 | uint16_t src_stride, uint16_t dst_stride, bool addrmode, | 1076 | uint16_t src_stride, uint16_t dst_stride, bool addrmode, |
| @@ -216,6 +216,38 @@ __aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ bfloat16_t* dst, bfloat16_ | |||
| 216 | asc_sync_post_process(); | 216 | asc_sync_post_process(); |
| 217 | } | 217 | } |
| 218 | 218 | ||
| 219 | +// create_cbuf_matrix_h | ||
| 220 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ bfloat16_t* dst, half value, | ||
| 221 | + const asc_fill_value_config& config) | ||
| 222 | +{ | ||
| 223 | + if ASC_IS_AIC { | ||
| 224 | + create_cbuf_matrix_h(dst, config.config, value); | ||
| 225 | + } | ||
| 226 | +} | ||
| 227 | + | ||
| 228 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ bfloat16_t* dst, half value, | ||
| 229 | + const asc_fill_value_config& config) | ||
| 230 | +{ | ||
| 231 | + asc_fill_l1_impl(dst, value, config); | ||
| 232 | + asc_sync_post_process(); | ||
| 233 | +} | ||
| 234 | + | ||
| 235 | +// create_cbuf_matrix_ui | ||
| 236 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ bfloat16_t* dst, uint32_t value, | ||
| 237 | + const asc_fill_value_config& config) | ||
| 238 | +{ | ||
| 239 | + if ASC_IS_AIC { | ||
| 240 | + create_cbuf_matrix_ui(dst, config.config, value); | ||
| 241 | + } | ||
| 242 | +} | ||
| 243 | + | ||
| 244 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ bfloat16_t* dst, uint32_t value, | ||
| 245 | + const asc_fill_value_config& config) | ||
| 246 | +{ | ||
| 247 | + asc_fill_l1_impl(dst, value, config); | ||
| 248 | + asc_sync_post_process(); | ||
| 249 | +} | ||
| 250 | + | ||
| 219 | 251 | ||
| 220 | 252 | ||
| 221 | 253 | ||
| @@ -0,0 +1,39 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | +/* ! | ||
| 12 | + * \file asc_set_atomic_add_int16_impl.h | ||
| 13 | + * \brief | ||
| 14 | + */ | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + "impl/c_api/instr_impl/npu_arch_3510/atomic_impl/asc_set_atomic_add_int16_impl.h is an internal header file and must not be used directly. Functions or variables defined in this file maybe removed in the future. Please use " | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + | ||
| 23 | + | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +__aicore__ inline void asc_set_atomic_add_int16_impl() | ||
| 29 | +{ | ||
| 30 | + set_atomic_add(); | ||
| 31 | + set_atomic_s16(); | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | + | ||
| 35 | + | ||
| 36 | + | ||
| 37 | + | ||
| 38 | + | ||
| 39 | + | ||
| @@ -0,0 +1,34 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + "impl/c_api/instr_impl/npu_arch_3510/atomic_impl/asc_set_atomic_add_int8_impl.h is an internal header file and must not be used directly. Functions or variables defined in this file maybe removed in the future. Please use " | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + | ||
| 23 | +__aicore__ inline void asc_set_atomic_add_int8_impl() | ||
| 24 | +{ | ||
| 25 | + set_atomic_add(); | ||
| 26 | + set_atomic_s8(); | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | + | ||
| 30 | + | ||
| 31 | + | ||
| 32 | + | ||
| 33 | + | ||
| 34 | + | ||
| @@ -0,0 +1,39 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | +/* ! | ||
| 12 | + * \file asc_set_atomic_add_int_impl.h | ||
| 13 | + * \brief | ||
| 14 | + */ | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + "impl/c_api/instr_impl/npu_arch_3510/atomic_impl/asc_set_atomic_add_int_impl.h is an internal header file and must not be used directly. Functions or variables defined in this file maybe removed in the future. Please use " | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + | ||
| 23 | + | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +__aicore__ inline void asc_set_atomic_add_int_impl() | ||
| 29 | +{ | ||
| 30 | + set_atomic_add(); | ||
| 31 | + set_atomic_s32(); | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | + | ||
| 35 | + | ||
| 36 | + | ||
| 37 | + | ||
| 38 | + | ||
| 39 | + | ||
代码规范: 文件末尾缺少换行符(根据diff提示"\ No newline at end of file")。虽然这在大多数情况下不会导致功能问题,但不符合POSIX标准,且某些工具(如某些编译器、文本处理工具)可能会产生警告或行为不一致。 问题类型: 代码规范 文件路径: impl/c_api/instr_impl/npu_arch_3510/atomic_impl/asc_set_atomic_add_int_impl.h行号: 39 问题代码: #endif 修改建议: 在文件末尾添加一个空行,确保以换行符结束。 --- 此评论由代码审查工具自动生成 ![]() ![]() | |||
| @@ -17,7 +17,8 @@ | |||
| 17 | 17 | ||
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | -#include "instr_impl/npu_arch_3510/utils_impl/utils_impl.h" | 20 | +#include "instr_impl/npu_arch_3510/utils_impl.h" |
| 21 | + | ||
| 21 | __aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ void* dst, __gm__ void* src, uint32_t n_burst, uint32_t len_burst, uint8_t pad_func_mode, | 22 | __aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ void* dst, __gm__ void* src, uint32_t n_burst, uint32_t len_burst, uint8_t pad_func_mode, |
| 22 | uint64_t src_stride, uint32_t dst_stride) | 23 | uint64_t src_stride, uint32_t dst_stride) |
| 23 | { | 24 | { |
| @@ -32,9 +33,250 @@ __aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ void* dst, __gm__ void* | |||
| 32 | asc_copy_gm2l1_impl(dst, src, n_burst, len_burst, pad_func_mode, src_stride, dst_stride); | 33 | asc_copy_gm2l1_impl(dst, src, n_burst, len_burst, pad_func_mode, src_stride, dst_stride); |
| 33 | asc_sync_post_process(); | 34 | asc_sync_post_process(); |
| 34 | } | 35 | } |
| 36 | + | ||
| 37 | +// bfloat16_t | ||
| 38 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ bfloat16_t *dst, __gm__ bfloat16_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 39 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 40 | +{ | ||
| 41 | + if ASC_IS_AIC { | ||
| 42 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 43 | + } | ||
| 44 | +} | ||
| 45 | + | ||
| 46 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ bfloat16_t *dst, __gm__ bfloat16_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 47 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 48 | +{ | ||
| 49 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 50 | + asc_sync_post_process(); | ||
| 51 | +} | ||
| 52 | + | ||
| 53 | +// float | ||
| 54 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ float *dst, __gm__ float *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 55 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 56 | +{ | ||
| 57 | + if ASC_IS_AIC { | ||
| 58 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 59 | + } | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ float *dst, __gm__ float *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 63 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 64 | +{ | ||
| 65 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 66 | + asc_sync_post_process(); | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | +// float8_e4m3_t | ||
| 70 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ float8_e4m3_t *dst, __gm__ float8_e4m3_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 71 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 72 | +{ | ||
| 73 | + if ASC_IS_AIC { | ||
| 74 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 75 | + } | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ float8_e4m3_t *dst, __gm__ float8_e4m3_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 79 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 80 | +{ | ||
| 81 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 82 | + asc_sync_post_process(); | ||
| 83 | +} | ||
| 84 | + | ||
| 85 | +// float8_e5m2_t | ||
| 86 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ float8_e5m2_t *dst, __gm__ float8_e5m2_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 87 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 88 | +{ | ||
| 89 | + if ASC_IS_AIC { | ||
| 90 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 91 | + } | ||
| 92 | +} | ||
| 93 | + | ||
| 94 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ float8_e5m2_t *dst, __gm__ float8_e5m2_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 95 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 96 | +{ | ||
| 97 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 98 | + asc_sync_post_process(); | ||
| 99 | +} | ||
| 100 | + | ||
| 101 | +// half | ||
| 102 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ half *dst, __gm__ half *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 103 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 104 | +{ | ||
| 105 | + if ASC_IS_AIC { | ||
| 106 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 107 | + } | ||
| 108 | +} | ||
| 109 | + | ||
| 110 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ half *dst, __gm__ half *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 111 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 112 | +{ | ||
| 113 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 114 | + asc_sync_post_process(); | ||
| 115 | +} | ||
| 116 | + | ||
| 117 | +// hifloat8_t | ||
| 118 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ hifloat8_t *dst, __gm__ hifloat8_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 119 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 120 | +{ | ||
| 121 | + if ASC_IS_AIC { | ||
| 122 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 123 | + } | ||
| 124 | +} | ||
| 125 | + | ||
| 126 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ hifloat8_t *dst, __gm__ hifloat8_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 127 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 128 | +{ | ||
| 129 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 130 | + asc_sync_post_process(); | ||
| 131 | +} | ||
| 132 | + | ||
| 133 | +// int16_t | ||
| 134 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ int16_t *dst, __gm__ int16_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 135 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 136 | +{ | ||
| 137 | + if ASC_IS_AIC { | ||
| 138 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 139 | + } | ||
| 140 | +} | ||
| 141 | + | ||
| 142 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ int16_t *dst, __gm__ int16_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 143 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 144 | +{ | ||
| 145 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 146 | + asc_sync_post_process(); | ||
| 147 | +} | ||
| 148 | + | ||
| 149 | +// int32_t | ||
| 150 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ int32_t *dst, __gm__ int32_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 151 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 152 | +{ | ||
| 153 | + if ASC_IS_AIC { | ||
| 154 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 155 | + } | ||
| 156 | +} | ||
| 157 | + | ||
| 158 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ int32_t *dst, __gm__ int32_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 159 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 160 | +{ | ||
| 161 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 162 | + asc_sync_post_process(); | ||
| 163 | +} | ||
| 164 | + | ||
| 165 | +// int8_t | ||
| 166 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ int8_t *dst, __gm__ int8_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 167 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 168 | +{ | ||
| 169 | + if ASC_IS_AIC { | ||
| 170 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 171 | + } | ||
| 172 | +} | ||
| 173 | + | ||
| 174 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ int8_t *dst, __gm__ int8_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 175 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 176 | +{ | ||
| 177 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 178 | + asc_sync_post_process(); | ||
| 179 | +} | ||
| 180 | + | ||
| 181 | +// uint16_t | ||
| 182 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ uint16_t *dst, __gm__ uint16_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 183 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 184 | +{ | ||
| 185 | + if ASC_IS_AIC { | ||
| 186 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 187 | + } | ||
| 188 | +} | ||
| 189 | + | ||
| 190 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ uint16_t *dst, __gm__ uint16_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 191 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 192 | +{ | ||
| 193 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 194 | + asc_sync_post_process(); | ||
| 195 | +} | ||
| 196 | + | ||
| 197 | +// uint32_t | ||
| 198 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ uint32_t *dst, __gm__ uint32_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 199 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 200 | +{ | ||
| 201 | + if ASC_IS_AIC { | ||
| 202 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 203 | + } | ||
| 204 | +} | ||
| 205 | + | ||
| 206 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ uint32_t *dst, __gm__ uint32_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 207 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 208 | +{ | ||
| 209 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 210 | + asc_sync_post_process(); | ||
| 211 | +} | ||
| 212 | + | ||
| 213 | +// uint8_t | ||
| 214 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ uint8_t *dst, __gm__ uint8_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 215 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 216 | +{ | ||
| 217 | + if ASC_IS_AIC { | ||
| 218 | + load_gm_to_cbuf_2dv2(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 219 | + } | ||
| 220 | +} | ||
| 221 | + | ||
| 222 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ uint8_t *dst, __gm__ uint8_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 223 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 224 | +{ | ||
| 225 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 226 | + asc_sync_post_process(); | ||
| 227 | +} | ||
| 228 | + | ||
| 229 | +// float4_e1m2x2_t | ||
| 230 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ float4_e1m2x2_t *dst, __gm__ float4_e1m2x2_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 231 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 232 | +{ | ||
| 233 | + if ASC_IS_AIC { | ||
| 234 | + load_gm_to_cbuf_2dv2_s4(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 235 | + } | ||
| 236 | +} | ||
| 237 | + | ||
| 238 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ float4_e1m2x2_t *dst, __gm__ float4_e1m2x2_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 239 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 240 | +{ | ||
| 241 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 242 | + asc_sync_post_process(); | ||
| 243 | +} | ||
| 244 | + | ||
| 245 | +// float4_e2m1x2_t | ||
| 246 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ float4_e2m1x2_t *dst, __gm__ float4_e2m1x2_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 247 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 248 | +{ | ||
| 249 | + if ASC_IS_AIC { | ||
| 250 | + load_gm_to_cbuf_2dv2_s4(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 251 | + } | ||
| 252 | +} | ||
| 253 | + | ||
| 254 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ float4_e2m1x2_t *dst, __gm__ float4_e2m1x2_t *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 255 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 256 | +{ | ||
| 257 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 258 | + asc_sync_post_process(); | ||
| 259 | +} | ||
| 260 | + | ||
| 261 | +// void | ||
| 262 | +__aicore__ inline void asc_copy_gm2l1_impl(__cbuf__ void *dst, __gm__ void *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 263 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 264 | +{ | ||
| 265 | + if ASC_IS_AIC { | ||
| 266 | + load_gm_to_cbuf_2dv2_s4(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, 0, decomp_mode, l2_cache_ctl); | ||
| 267 | + } | ||
| 268 | +} | ||
| 269 | + | ||
| 270 | +__aicore__ inline void asc_copy_gm2l1_sync_impl(__cbuf__ void *dst, __gm__ void *src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 271 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl) | ||
| 272 | +{ | ||
| 273 | + asc_copy_gm2l1_impl(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); | ||
| 274 | + asc_sync_post_process(); | ||
| 275 | +} | ||
| 276 | + | ||
| 35 | 277 | ||
| 36 | 278 | ||
| 37 | 279 | ||
| 38 | 280 | ||
| 39 | 281 | ||
| 40 | -#endif | 282 | +#endif |
| @@ -0,0 +1,531 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +// bfloat16_t float | ||
| 23 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ bfloat16_t *dst_addr, __cc__ float *src_addr, | ||
| 24 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 25 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 26 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 27 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 28 | + bool broadcast_en, bool NZ2DN_en) | ||
| 29 | +{ | ||
| 30 | + if ASC_IS_AIC { | ||
| 31 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 32 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 33 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 34 | + } | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ bfloat16_t* dst_addr, __cc__ float* src_addr, | ||
| 38 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 39 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 40 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 41 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 42 | + bool broadcast_en, bool NZ2DN_en) | ||
| 43 | +{ | ||
| 44 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 45 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 46 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 47 | + asc_sync_post_process(); | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +// half float | ||
| 51 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ half *dst_addr, __cc__ float *src_addr, | ||
| 52 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 53 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 54 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 55 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 56 | + bool broadcast_en, bool NZ2DN_en) | ||
| 57 | +{ | ||
| 58 | + if ASC_IS_AIC { | ||
| 59 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 60 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 61 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 62 | + } | ||
| 63 | +} | ||
| 64 | + | ||
| 65 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ half* dst_addr, __cc__ float* src_addr, | ||
| 66 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 67 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 68 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 69 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 70 | + bool broadcast_en, bool NZ2DN_en) | ||
| 71 | +{ | ||
| 72 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 73 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 74 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 75 | + asc_sync_post_process(); | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +// float8_e4m3_t float | ||
| 79 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ float8_e4m3_t *dst_addr, __cc__ float *src_addr, | ||
| 80 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 81 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 82 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 83 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 84 | + bool broadcast_en, bool NZ2DN_en) | ||
| 85 | +{ | ||
| 86 | + if ASC_IS_AIC { | ||
| 87 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 88 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 89 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 90 | + } | ||
| 91 | +} | ||
| 92 | + | ||
| 93 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ float8_e4m3_t* dst_addr, __cc__ float* src_addr, | ||
| 94 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 95 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 96 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 97 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 98 | + bool broadcast_en, bool NZ2DN_en) | ||
| 99 | +{ | ||
| 100 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 101 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 102 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 103 | + asc_sync_post_process(); | ||
| 104 | +} | ||
| 105 | + | ||
| 106 | +// float8_e5m2_t float | ||
| 107 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ float8_e5m2_t *dst_addr, __cc__ float *src_addr, | ||
| 108 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 109 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 110 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 111 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 112 | + bool broadcast_en, bool NZ2DN_en) | ||
| 113 | +{ | ||
| 114 | + if ASC_IS_AIC { | ||
| 115 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 116 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 117 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 118 | + } | ||
| 119 | +} | ||
| 120 | + | ||
| 121 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ float8_e5m2_t* dst_addr, __cc__ float* src_addr, | ||
| 122 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 123 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 124 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 125 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 126 | + bool broadcast_en, bool NZ2DN_en) | ||
| 127 | +{ | ||
| 128 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 129 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 130 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 131 | + asc_sync_post_process(); | ||
| 132 | +} | ||
| 133 | + | ||
| 134 | +// hifloat8_t float | ||
| 135 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ hifloat8_t *dst_addr, __cc__ float *src_addr, | ||
| 136 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 137 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 138 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 139 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 140 | + bool broadcast_en, bool NZ2DN_en) | ||
| 141 | +{ | ||
| 142 | + if ASC_IS_AIC { | ||
| 143 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 144 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 145 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 146 | + } | ||
| 147 | +} | ||
| 148 | + | ||
| 149 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ hifloat8_t* dst_addr, __cc__ float* src_addr, | ||
| 150 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 151 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 152 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 153 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 154 | + bool broadcast_en, bool NZ2DN_en) | ||
| 155 | +{ | ||
| 156 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 157 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 158 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 159 | + asc_sync_post_process(); | ||
| 160 | +} | ||
| 161 | + | ||
| 162 | +// int8 float | ||
| 163 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ int8_t *dst_addr, __cc__ float *src_addr, | ||
| 164 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 165 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 166 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 167 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 168 | + bool broadcast_en, bool NZ2DN_en) | ||
| 169 | +{ | ||
| 170 | + if ASC_IS_AIC { | ||
| 171 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 172 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 173 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 174 | + } | ||
| 175 | +} | ||
| 176 | + | ||
| 177 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ int8_t* dst_addr, __cc__ float* src_addr, | ||
| 178 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 179 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 180 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 181 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 182 | + bool broadcast_en, bool NZ2DN_en) | ||
| 183 | +{ | ||
| 184 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 185 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 186 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 187 | + asc_sync_post_process(); | ||
| 188 | +} | ||
| 189 | + | ||
| 190 | +// uint8 float | ||
| 191 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ uint8_t *dst_addr, __cc__ float *src_addr, | ||
| 192 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 193 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 194 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 195 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 196 | + bool broadcast_en, bool NZ2DN_en) | ||
| 197 | +{ | ||
| 198 | + if ASC_IS_AIC { | ||
| 199 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 200 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 201 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 202 | + } | ||
| 203 | +} | ||
| 204 | + | ||
| 205 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ uint8_t* dst_addr, __cc__ float* src_addr, | ||
| 206 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 207 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 208 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 209 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 210 | + bool broadcast_en, bool NZ2DN_en) | ||
| 211 | +{ | ||
| 212 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 213 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 214 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 215 | + asc_sync_post_process(); | ||
| 216 | +} | ||
| 217 | + | ||
| 218 | +// float float | ||
| 219 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ float *dst_addr, __cc__ float *src_addr, | ||
| 220 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 221 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 222 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 223 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 224 | + bool broadcast_en, bool NZ2DN_en) | ||
| 225 | +{ | ||
| 226 | + if ASC_IS_AIC { | ||
| 227 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 228 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 229 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 230 | + } | ||
| 231 | +} | ||
| 232 | + | ||
| 233 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ float* dst_addr, __cc__ float* src_addr, | ||
| 234 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 235 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 236 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 237 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 238 | + bool broadcast_en, bool NZ2DN_en) | ||
| 239 | +{ | ||
| 240 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 241 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 242 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 243 | + asc_sync_post_process(); | ||
| 244 | +} | ||
| 245 | + | ||
| 246 | +// bfloat16_t int32_t | ||
| 247 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ bfloat16_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 248 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 249 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 250 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 251 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 252 | + bool broadcast_en, bool NZ2DN_en) | ||
| 253 | +{ | ||
| 254 | + if ASC_IS_AIC { | ||
| 255 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 256 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 257 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 258 | + } | ||
| 259 | +} | ||
| 260 | + | ||
| 261 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ bfloat16_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 262 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 263 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 264 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 265 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 266 | + bool broadcast_en, bool NZ2DN_en) | ||
| 267 | +{ | ||
| 268 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 269 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 270 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 271 | + asc_sync_post_process(); | ||
| 272 | +} | ||
| 273 | + | ||
| 274 | +// half int32_t | ||
| 275 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ half *dst_addr, __cc__ int32_t *src_addr, | ||
| 276 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 277 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 278 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 279 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 280 | + bool broadcast_en, bool NZ2DN_en) | ||
| 281 | +{ | ||
| 282 | + if ASC_IS_AIC { | ||
| 283 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 284 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 285 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 286 | + } | ||
| 287 | +} | ||
| 288 | + | ||
| 289 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ half* dst_addr, __cc__ int32_t* src_addr, | ||
| 290 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 291 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 292 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 293 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 294 | + bool broadcast_en, bool NZ2DN_en) | ||
| 295 | +{ | ||
| 296 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 297 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 298 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 299 | + asc_sync_post_process(); | ||
| 300 | +} | ||
| 301 | + | ||
| 302 | +// float8_e4m3_t int32_t | ||
| 303 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ float8_e4m3_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 304 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 305 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 306 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 307 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 308 | + bool broadcast_en, bool NZ2DN_en) | ||
| 309 | +{ | ||
| 310 | + if ASC_IS_AIC { | ||
| 311 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 312 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 313 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 314 | + } | ||
| 315 | +} | ||
| 316 | + | ||
| 317 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ float8_e4m3_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 318 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 319 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 320 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 321 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 322 | + bool broadcast_en, bool NZ2DN_en) | ||
| 323 | +{ | ||
| 324 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 325 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 326 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 327 | + asc_sync_post_process(); | ||
| 328 | +} | ||
| 329 | + | ||
| 330 | +// float8_e5m2_t int32_t | ||
| 331 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ float8_e5m2_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 332 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 333 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 334 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 335 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 336 | + bool broadcast_en, bool NZ2DN_en) | ||
| 337 | +{ | ||
| 338 | + if ASC_IS_AIC { | ||
| 339 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 340 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 341 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 342 | + } | ||
| 343 | +} | ||
| 344 | + | ||
| 345 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ float8_e5m2_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 346 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 347 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 348 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 349 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 350 | + bool broadcast_en, bool NZ2DN_en) | ||
| 351 | +{ | ||
| 352 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 353 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 354 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 355 | + asc_sync_post_process(); | ||
| 356 | +} | ||
| 357 | + | ||
| 358 | +// hifloat8_t int32_t | ||
| 359 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ hifloat8_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 360 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 361 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 362 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 363 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 364 | + bool broadcast_en, bool NZ2DN_en) | ||
| 365 | +{ | ||
| 366 | + if ASC_IS_AIC { | ||
| 367 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 368 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 369 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 370 | + } | ||
| 371 | +} | ||
| 372 | + | ||
| 373 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ hifloat8_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 374 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 375 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 376 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 377 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 378 | + bool broadcast_en, bool NZ2DN_en) | ||
| 379 | +{ | ||
| 380 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 381 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 382 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 383 | + asc_sync_post_process(); | ||
| 384 | +} | ||
| 385 | + | ||
| 386 | +// int8 int32_t | ||
| 387 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ int8_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 388 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 389 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 390 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 391 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 392 | + bool broadcast_en, bool NZ2DN_en) | ||
| 393 | +{ | ||
| 394 | + if ASC_IS_AIC { | ||
| 395 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 396 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 397 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 398 | + } | ||
| 399 | +} | ||
| 400 | + | ||
| 401 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ int8_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 402 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 403 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 404 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 405 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 406 | + bool broadcast_en, bool NZ2DN_en) | ||
| 407 | +{ | ||
| 408 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 409 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 410 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 411 | + asc_sync_post_process(); | ||
| 412 | +} | ||
| 413 | + | ||
| 414 | +// uint8 int32_t | ||
| 415 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ uint8_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 416 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 417 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 418 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 419 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 420 | + bool broadcast_en, bool NZ2DN_en) | ||
| 421 | +{ | ||
| 422 | + if ASC_IS_AIC { | ||
| 423 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 424 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 425 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 426 | + } | ||
| 427 | +} | ||
| 428 | + | ||
| 429 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ uint8_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 430 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 431 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 432 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 433 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 434 | + bool broadcast_en, bool NZ2DN_en) | ||
| 435 | +{ | ||
| 436 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 437 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 438 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 439 | + asc_sync_post_process(); | ||
| 440 | +} | ||
| 441 | + | ||
| 442 | +// int32_t int32_t | ||
| 443 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ int32_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 444 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 445 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 446 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 447 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 448 | + bool broadcast_en, bool NZ2DN_en) | ||
| 449 | +{ | ||
| 450 | + if ASC_IS_AIC { | ||
| 451 | + copy_matrix_cc_to_gm(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 452 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 453 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 454 | + } | ||
| 455 | +} | ||
| 456 | + | ||
| 457 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ int32_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 458 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 459 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 460 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 461 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 462 | + bool broadcast_en, bool NZ2DN_en) | ||
| 463 | +{ | ||
| 464 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 465 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 466 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 467 | + asc_sync_post_process(); | ||
| 468 | +} | ||
| 469 | + | ||
| 470 | +// void float | ||
| 471 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ void *dst_addr, __cc__ float *src_addr, | ||
| 472 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 473 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 474 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 475 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 476 | + bool broadcast_en, bool NZ2DN_en) | ||
| 477 | +{ | ||
| 478 | + if ASC_IS_AIC { | ||
| 479 | + copy_matrix_cc_to_gm_s4(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 480 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 481 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 482 | + } | ||
| 483 | +} | ||
| 484 | + | ||
| 485 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ void* dst_addr, __cc__ float* src_addr, | ||
| 486 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 487 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 488 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 489 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 490 | + bool broadcast_en, bool NZ2DN_en) | ||
| 491 | +{ | ||
| 492 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 493 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 494 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 495 | + asc_sync_post_process(); | ||
| 496 | +} | ||
| 497 | + | ||
| 498 | +// void int32_t | ||
| 499 | +__aicore__ inline void asc_copy_l0c2gm_impl(__gm__ void *dst_addr, __cc__ int32_t *src_addr, | ||
| 500 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 501 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 502 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 503 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 504 | + bool broadcast_en, bool NZ2DN_en) | ||
| 505 | +{ | ||
| 506 | + if ASC_IS_AIC { | ||
| 507 | + copy_matrix_cc_to_gm_s4(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 508 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, clip_relu_post, | ||
| 509 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 510 | + } | ||
| 511 | +} | ||
| 512 | + | ||
| 513 | +__aicore__ inline void asc_copy_l0c2gm_sync_impl(__gm__ void* dst_addr, __cc__ int32_t* src_addr, | ||
| 514 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 515 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 516 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 517 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 518 | + bool broadcast_en, bool NZ2DN_en) | ||
| 519 | +{ | ||
| 520 | + asc_copy_l0c2gm_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 521 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, | ||
| 522 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 523 | + asc_sync_post_process(); | ||
| 524 | +} | ||
| 525 | + | ||
| 526 | + | ||
| 527 | + | ||
| 528 | + | ||
| 529 | + | ||
| 530 | + | ||
| 531 | + | ||
| @@ -141,6 +141,60 @@ __aicore__ inline void asc_copy_l0c2l1_impl(__cbuf__ int32_t* dst, __cc__ int32_ | |||
| 141 | } | 141 | } |
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | +// void float | ||
| 145 | +__aicore__ inline void asc_copy_l0c2l1_impl(__cbuf__ void *dst_addr, __cc__ float *src_addr, uint16_t n_size, | ||
| 146 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 147 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 148 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 149 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 150 | +{ | ||
| 151 | + if ASC_IS_AIC { | ||
| 152 | + copy_matrix_cc_to_cbuf_s4(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 153 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), | ||
| 154 | + relu_post, clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, | ||
| 155 | + broadcast_en, NZ2DN_en); | ||
| 156 | + } | ||
| 157 | +} | ||
| 158 | + | ||
| 159 | +__aicore__ inline void asc_copy_l0c2l1_sync_impl(__cbuf__ void *dst_addr, __cc__ float *src_addr, uint16_t n_size, | ||
| 160 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 161 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 162 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 163 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 164 | +{ | ||
| 165 | + asc_copy_l0c2l1_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 166 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 167 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 168 | + asc_sync_post_process(); | ||
| 169 | +} | ||
| 170 | + | ||
| 171 | +// void int32_t | ||
| 172 | +__aicore__ inline void asc_copy_l0c2l1_impl(__cbuf__ void *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, | ||
| 173 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 174 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 175 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 176 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 177 | +{ | ||
| 178 | + if ASC_IS_AIC { | ||
| 179 | + copy_matrix_cc_to_cbuf_s4(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 180 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), | ||
| 181 | + relu_post, clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, | ||
| 182 | + broadcast_en, NZ2DN_en); | ||
| 183 | + } | ||
| 184 | +} | ||
| 185 | + | ||
| 186 | +__aicore__ inline void asc_copy_l0c2l1_sync_impl(__cbuf__ void *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, | ||
| 187 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 188 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 189 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 190 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 191 | +{ | ||
| 192 | + asc_copy_l0c2l1_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, | ||
| 193 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 194 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 195 | + asc_sync_post_process(); | ||
| 196 | +} | ||
| 197 | + | ||
| 144 | 198 | ||
| 145 | 199 | ||
| 146 | 200 | ||
| @@ -0,0 +1,513 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +// bfloat16_t float | ||
| 23 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ bfloat16_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 24 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 25 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 26 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 27 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 28 | +{ | ||
| 29 | + if ASC_IS_AIC { | ||
| 30 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 31 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 32 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 33 | + | ||
| 34 | + } | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ bfloat16_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 38 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 39 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 40 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 41 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 42 | +{ | ||
| 43 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 44 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 45 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 46 | + asc_sync_post_process(); | ||
| 47 | +} | ||
| 48 | + | ||
| 49 | +// half float | ||
| 50 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ half *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 51 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 52 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 53 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 54 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 55 | +{ | ||
| 56 | + if ASC_IS_AIC { | ||
| 57 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 58 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 59 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 60 | + | ||
| 61 | + } | ||
| 62 | +} | ||
| 63 | + | ||
| 64 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ half* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 65 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 66 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 67 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 68 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 69 | +{ | ||
| 70 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 71 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 72 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 73 | + asc_sync_post_process(); | ||
| 74 | +} | ||
| 75 | + | ||
| 76 | +// float8_e4m3_t float | ||
| 77 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ float8_e4m3_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 78 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 79 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 80 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 81 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 82 | +{ | ||
| 83 | + if ASC_IS_AIC { | ||
| 84 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 85 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 86 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 87 | + | ||
| 88 | + } | ||
| 89 | +} | ||
| 90 | + | ||
| 91 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ float8_e4m3_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 92 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 93 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 94 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 95 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 96 | +{ | ||
| 97 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 98 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 99 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 100 | + asc_sync_post_process(); | ||
| 101 | +} | ||
| 102 | + | ||
| 103 | +// float8_e5m2_t float | ||
| 104 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ float8_e5m2_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 105 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 106 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 107 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 108 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 109 | +{ | ||
| 110 | + if ASC_IS_AIC { | ||
| 111 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 112 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 113 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 114 | + | ||
| 115 | + } | ||
| 116 | +} | ||
| 117 | + | ||
| 118 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ float8_e5m2_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 119 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 120 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 121 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 122 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 123 | +{ | ||
| 124 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 125 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 126 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 127 | + asc_sync_post_process(); | ||
| 128 | +} | ||
| 129 | + | ||
| 130 | +// hifloat8_t float | ||
| 131 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ hifloat8_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 132 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 133 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 134 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 135 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 136 | +{ | ||
| 137 | + if ASC_IS_AIC { | ||
| 138 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 139 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 140 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 141 | + | ||
| 142 | + } | ||
| 143 | +} | ||
| 144 | + | ||
| 145 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ hifloat8_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 146 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 147 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 148 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 149 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 150 | +{ | ||
| 151 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 152 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 153 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 154 | + asc_sync_post_process(); | ||
| 155 | +} | ||
| 156 | + | ||
| 157 | +// int8 float | ||
| 158 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ int8_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 159 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 160 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 161 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 162 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 163 | +{ | ||
| 164 | + if ASC_IS_AIC { | ||
| 165 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 166 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 167 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 168 | + | ||
| 169 | + } | ||
| 170 | +} | ||
| 171 | + | ||
| 172 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ int8_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 173 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 174 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 175 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 176 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 177 | +{ | ||
| 178 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 179 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 180 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 181 | + asc_sync_post_process(); | ||
| 182 | +} | ||
| 183 | + | ||
| 184 | +// uint8 float | ||
| 185 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ uint8_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 186 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 187 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 188 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 189 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 190 | +{ | ||
| 191 | + if ASC_IS_AIC { | ||
| 192 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 193 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 194 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 195 | + | ||
| 196 | + } | ||
| 197 | +} | ||
| 198 | + | ||
| 199 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ uint8_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 200 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 201 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 202 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 203 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 204 | +{ | ||
| 205 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 206 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 207 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 208 | + asc_sync_post_process(); | ||
| 209 | +} | ||
| 210 | + | ||
| 211 | +// float float | ||
| 212 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ float *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 213 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 214 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 215 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 216 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 217 | +{ | ||
| 218 | + if ASC_IS_AIC { | ||
| 219 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 220 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 221 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 222 | + | ||
| 223 | + } | ||
| 224 | +} | ||
| 225 | + | ||
| 226 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ float* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 227 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 228 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 229 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 230 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 231 | +{ | ||
| 232 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 233 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 234 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 235 | + asc_sync_post_process(); | ||
| 236 | +} | ||
| 237 | + | ||
| 238 | +// bfloat16_t int32_t | ||
| 239 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ bfloat16_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 240 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 241 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 242 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 243 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 244 | +{ | ||
| 245 | + if ASC_IS_AIC { | ||
| 246 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 247 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 248 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 249 | + | ||
| 250 | + } | ||
| 251 | +} | ||
| 252 | + | ||
| 253 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ bfloat16_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 254 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 255 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 256 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 257 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 258 | +{ | ||
| 259 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 260 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 261 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 262 | + asc_sync_post_process(); | ||
| 263 | +} | ||
| 264 | + | ||
| 265 | +// half int32_t | ||
| 266 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ half *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 267 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 268 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 269 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 270 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 271 | +{ | ||
| 272 | + if ASC_IS_AIC { | ||
| 273 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 274 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 275 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 276 | + | ||
| 277 | + } | ||
| 278 | +} | ||
| 279 | + | ||
| 280 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ half* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 281 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 282 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 283 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 284 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 285 | +{ | ||
| 286 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 287 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 288 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 289 | + asc_sync_post_process(); | ||
| 290 | +} | ||
| 291 | + | ||
| 292 | +// float8_e4m3_t int32_t | ||
| 293 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ float8_e4m3_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 294 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 295 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 296 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 297 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 298 | +{ | ||
| 299 | + if ASC_IS_AIC { | ||
| 300 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 301 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 302 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 303 | + | ||
| 304 | + } | ||
| 305 | +} | ||
| 306 | + | ||
| 307 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ float8_e4m3_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 308 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 309 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 310 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 311 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 312 | +{ | ||
| 313 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 314 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 315 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 316 | + asc_sync_post_process(); | ||
| 317 | +} | ||
| 318 | + | ||
| 319 | +// float8_e5m2_t int32_t | ||
| 320 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ float8_e5m2_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 321 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 322 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 323 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 324 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 325 | +{ | ||
| 326 | + if ASC_IS_AIC { | ||
| 327 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 328 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 329 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 330 | + | ||
| 331 | + } | ||
| 332 | +} | ||
| 333 | + | ||
| 334 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ float8_e5m2_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 335 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 336 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 337 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 338 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 339 | +{ | ||
| 340 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 341 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 342 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 343 | + asc_sync_post_process(); | ||
| 344 | +} | ||
| 345 | + | ||
| 346 | +// hifloat8_t int32_t | ||
| 347 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ hifloat8_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 348 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 349 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 350 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 351 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 352 | +{ | ||
| 353 | + if ASC_IS_AIC { | ||
| 354 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 355 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 356 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 357 | + | ||
| 358 | + } | ||
| 359 | +} | ||
| 360 | + | ||
| 361 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ hifloat8_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 362 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 363 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 364 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 365 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 366 | +{ | ||
| 367 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 368 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 369 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 370 | + asc_sync_post_process(); | ||
| 371 | +} | ||
| 372 | + | ||
| 373 | +// int8 int32_t | ||
| 374 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ int8_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 375 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 376 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 377 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 378 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 379 | +{ | ||
| 380 | + if ASC_IS_AIC { | ||
| 381 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 382 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 383 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 384 | + | ||
| 385 | + } | ||
| 386 | +} | ||
| 387 | + | ||
| 388 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ int8_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 389 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 390 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 391 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 392 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 393 | +{ | ||
| 394 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 395 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 396 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 397 | + asc_sync_post_process(); | ||
| 398 | +} | ||
| 399 | + | ||
| 400 | +// uint8 int32_t | ||
| 401 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ uint8_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 402 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 403 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 404 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 405 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 406 | +{ | ||
| 407 | + if ASC_IS_AIC { | ||
| 408 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 409 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 410 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 411 | + | ||
| 412 | + } | ||
| 413 | +} | ||
| 414 | + | ||
| 415 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ uint8_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 416 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 417 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 418 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 419 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 420 | +{ | ||
| 421 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 422 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 423 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 424 | + asc_sync_post_process(); | ||
| 425 | +} | ||
| 426 | + | ||
| 427 | +// int32_t int32_t | ||
| 428 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ int32_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 429 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 430 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 431 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 432 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 433 | +{ | ||
| 434 | + if ASC_IS_AIC { | ||
| 435 | + copy_matrix_cc_to_ub(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 436 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 437 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 438 | + | ||
| 439 | + } | ||
| 440 | +} | ||
| 441 | + | ||
| 442 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ int32_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 443 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 444 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 445 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 446 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 447 | +{ | ||
| 448 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 449 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 450 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 451 | + asc_sync_post_process(); | ||
| 452 | +} | ||
| 453 | + | ||
| 454 | +// void float | ||
| 455 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ void *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 456 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 457 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 458 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 459 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 460 | +{ | ||
| 461 | + if ASC_IS_AIC { | ||
| 462 | + copy_matrix_cc_to_ub_s4(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 463 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 464 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 465 | + | ||
| 466 | + } | ||
| 467 | +} | ||
| 468 | + | ||
| 469 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ void* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 470 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 471 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 472 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 473 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 474 | +{ | ||
| 475 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 476 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 477 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 478 | + asc_sync_post_process(); | ||
| 479 | +} | ||
| 480 | + | ||
| 481 | +// void int32_t | ||
| 482 | +__aicore__ inline void asc_copy_l0c2ub_impl(__ubuf__ void *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 483 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 484 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 485 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 486 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 487 | +{ | ||
| 488 | + if ASC_IS_AIC { | ||
| 489 | + copy_matrix_cc_to_ub_s4(dst_addr, src_addr, 0, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 490 | + unit_flag_ctl, static_cast<QuantMode_t>(quant_pre), relu_pre, split_en, NZ2ND_en, static_cast<QuantMode_post>(quant_post), relu_post, | ||
| 491 | + clip_relu_post, loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 492 | + | ||
| 493 | + } | ||
| 494 | +} | ||
| 495 | + | ||
| 496 | +__aicore__ inline void asc_copy_l0c2ub_sync_impl(__ubuf__ void* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 497 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 498 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 499 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 500 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en) | ||
| 501 | +{ | ||
| 502 | + asc_copy_l0c2ub_impl(dst_addr, src_addr, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, | ||
| 503 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, loop_enhance_en, | ||
| 504 | + eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, broadcast_en, NZ2DN_en); | ||
| 505 | + asc_sync_post_process(); | ||
| 506 | +} | ||
| 507 | + | ||
| 508 | + | ||
| 509 | + | ||
| 510 | + | ||
| 511 | + | ||
| 512 | + | ||
| 513 | + | ||
| @@ -0,0 +1,127 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +// ========== void -> uint64_t ========== | ||
| 23 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ void* src, uint16_t conv_control, uint16_t n_burst, | ||
| 24 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap) | ||
| 25 | +{ | ||
| 26 | + if ASC_IS_AIC { | ||
| 27 | + copy_cbuf_to_bt(dst, src, conv_control, n_burst, len_burst, source_gap, dst_gap); | ||
| 28 | + } | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ void* src, uint32_t size) | ||
| 32 | +{ | ||
| 33 | + asc_copy_l12bt_impl(dst, src, 0, 1, size / ASC_C_API_ONE_DATABLOCK_SIZE, 0, 0); | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +__aicore__ inline void asc_copy_l12bt_sync_impl(uint64_t dst, __cbuf__ void* src, uint32_t size) | ||
| 37 | +{ | ||
| 38 | + asc_copy_l12bt_impl(dst, src, size); | ||
| 39 | + asc_sync_post_process(); | ||
| 40 | +} | ||
| 41 | + | ||
| 42 | +// ========== bfloat16_t -> uint64_t ========== | ||
| 43 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ bfloat16_t* src, uint16_t conv_control, uint16_t n_burst, | ||
| 44 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap) | ||
| 45 | +{ | ||
| 46 | + if ASC_IS_AIC { | ||
| 47 | + copy_cbuf_to_bt(dst, src, conv_control, n_burst, len_burst, source_gap, dst_gap); | ||
| 48 | + } | ||
| 49 | +} | ||
| 50 | + | ||
| 51 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ bfloat16_t* src, uint32_t size) | ||
| 52 | +{ | ||
| 53 | + asc_copy_l12bt_impl(dst, src, 0, 1, size / ASC_C_API_ONE_DATABLOCK_SIZE, 0, 0); | ||
| 54 | +} | ||
| 55 | + | ||
| 56 | +__aicore__ inline void asc_copy_l12bt_sync_impl(uint64_t dst, __cbuf__ bfloat16_t* src, uint32_t size) | ||
| 57 | +{ | ||
| 58 | + asc_copy_l12bt_impl(dst, src, size); | ||
| 59 | + asc_sync_post_process(); | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +// ========== half -> uint64_t ========== | ||
| 63 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ half* src, uint16_t conv_control, uint16_t n_burst, | ||
| 64 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap) | ||
| 65 | +{ | ||
| 66 | + if ASC_IS_AIC { | ||
| 67 | + copy_cbuf_to_bt(dst, src, conv_control, n_burst, len_burst, source_gap, dst_gap); | ||
| 68 | + } | ||
| 69 | +} | ||
| 70 | + | ||
| 71 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ half* src, uint32_t size) | ||
| 72 | +{ | ||
| 73 | + asc_copy_l12bt_impl(dst, src, 0, 1, size / ASC_C_API_ONE_DATABLOCK_SIZE, 0, 0); | ||
| 74 | +} | ||
| 75 | + | ||
| 76 | +__aicore__ inline void asc_copy_l12bt_sync_impl(uint64_t dst, __cbuf__ half* src, uint32_t size) | ||
| 77 | +{ | ||
| 78 | + asc_copy_l12bt_impl(dst, src, size); | ||
| 79 | + asc_sync_post_process(); | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +// ========== float -> uint64_t ========== | ||
| 83 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ float* src, uint16_t conv_control, uint16_t n_burst, | ||
| 84 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap) | ||
| 85 | +{ | ||
| 86 | + if ASC_IS_AIC { | ||
| 87 | + copy_cbuf_to_bt(dst, src, conv_control, n_burst, len_burst, source_gap, dst_gap); | ||
| 88 | + } | ||
| 89 | +} | ||
| 90 | + | ||
| 91 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ float* src, uint32_t size) | ||
| 92 | +{ | ||
| 93 | + asc_copy_l12bt_impl(dst, src, 0, 1, size / ASC_C_API_ONE_DATABLOCK_SIZE, 0, 0); | ||
| 94 | +} | ||
| 95 | + | ||
| 96 | +__aicore__ inline void asc_copy_l12bt_sync_impl(uint64_t dst, __cbuf__ float* src, uint32_t size) | ||
| 97 | +{ | ||
| 98 | + asc_copy_l12bt_impl(dst, src, size); | ||
| 99 | + asc_sync_post_process(); | ||
| 100 | +} | ||
| 101 | + | ||
| 102 | +// ========== int32_t -> uint64_t ========== | ||
| 103 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ int32_t* src, uint16_t conv_control, uint16_t n_burst, | ||
| 104 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap) | ||
| 105 | +{ | ||
| 106 | + if ASC_IS_AIC { | ||
| 107 | + copy_cbuf_to_bt(dst, src, conv_control, n_burst, len_burst, source_gap, dst_gap); | ||
| 108 | + } | ||
| 109 | +} | ||
| 110 | + | ||
| 111 | +__aicore__ inline void asc_copy_l12bt_impl(uint64_t dst, __cbuf__ int32_t* src, uint32_t size) | ||
| 112 | +{ | ||
| 113 | + asc_copy_l12bt_impl(dst, src, 0, 1, size / ASC_C_API_ONE_DATABLOCK_SIZE, 0, 0); | ||
| 114 | +} | ||
| 115 | + | ||
| 116 | +__aicore__ inline void asc_copy_l12bt_sync_impl(uint64_t dst, __cbuf__ int32_t* src, uint32_t size) | ||
| 117 | +{ | ||
| 118 | + asc_copy_l12bt_impl(dst, src, size); | ||
| 119 | + asc_sync_post_process(); | ||
| 120 | +} | ||
| 121 | + | ||
| 122 | + | ||
| 123 | + | ||
| 124 | + | ||
| 125 | + | ||
| 126 | + | ||
| 127 | + | ||
| @@ -0,0 +1,46 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +__aicore__ inline void asc_copy_l12fb_v2_impl(__fbuf__ void * dst, __cbuf__ void * src, uint16_t burst_num, | ||
| 23 | + uint16_t burst_len, uint16_t src_stride, uint16_t dst_stride) | ||
| 24 | +{ | ||
| 25 | + if ASC_IS_AIC { | ||
| 26 | + copy_cbuf_to_fbuf_v2(dst, src, burst_num, burst_len, src_stride, dst_stride); | ||
| 27 | + } | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +__aicore__ inline void asc_copy_l12fb_v2_impl(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size) | ||
| 31 | +{ | ||
| 32 | + asc_copy_l12fb_v2_impl(dst, src, 1, size / ASC_C_API_ONE_DATABLOCK_SIZE, 0, 0); | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +__aicore__ inline void asc_copy_l12fb_v2_sync_impl(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size) | ||
| 36 | +{ | ||
| 37 | + asc_copy_l12fb_v2_impl(dst, src, size); | ||
| 38 | + asc_sync_post_process(); | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | + | ||
| 42 | + | ||
| 43 | + | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + | ||
| @@ -0,0 +1,42 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +__aicore__ inline void asc_copy_l12ub_impl(__ubuf__ void *dst_addr, __cbuf__ void *src_addr, bool sub_blockid, | ||
| 23 | + uint16_t burst_num, uint16_t burst_len, uint16_t src_gap, uint16_t dst_gap) | ||
| 24 | +{ | ||
| 25 | + if ASC_IS_AIC { | ||
| 26 | + copy_cbuf_to_ubuf(dst_addr, src_addr, sub_blockid, burst_num, burst_len, src_gap, dst_gap); | ||
| 27 | + } | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +__aicore__ inline void asc_copy_l12ub_sync_impl(__ubuf__ void *dst_addr, __cbuf__ void *src_addr, bool sub_blockid, | ||
| 31 | + uint16_t burst_num, uint16_t burst_len, uint16_t src_gap, uint16_t dst_gap) | ||
| 32 | +{ | ||
| 33 | + asc_copy_l12ub_impl(dst_addr, src_addr, sub_blockid, burst_num, burst_len, src_gap, dst_gap); | ||
| 34 | + asc_sync_post_process(); | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | + | ||
| 38 | + | ||
| 39 | + | ||
| 40 | + | ||
| 41 | + | ||
| 42 | + | ||
| @@ -0,0 +1,256 @@ | |||
| 1 | +/** | ||
| 2 | + * Copyright (c) 2025 Huawei Technologies Co., Ltd. | ||
| 3 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | + * CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | + * Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | + * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | + * See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | + */ | ||
| 10 | + | ||
| 11 | +/* ! | ||
| 12 | + * \file asc_fill_l1_impl.h | ||
| 13 | + * \brief | ||
| 14 | + */ | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + | ||
| 23 | + | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +// asc_fill_l1_value half | ||
| 28 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ half* dst, half value, const asc_fill_value_config& config) | ||
| 29 | +{ | ||
| 30 | + if ASC_IS_AIC { | ||
| 31 | + create_cbuf_matrix(dst, config.config, value); | ||
| 32 | + } | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ half* dst, half value, const asc_fill_value_config& config) | ||
| 36 | +{ | ||
| 37 | + asc_fill_l1_impl(dst, value, config); | ||
| 38 | + asc_sync_post_process(); | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ half* dst, uint32_t value, const asc_fill_value_config& config) | ||
| 42 | +{ | ||
| 43 | + if ASC_IS_AIC { | ||
| 44 | + create_cbuf_matrix(dst, config.config, value); | ||
| 45 | + } | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ half* dst, uint32_t value, | ||
| 49 | + const asc_fill_value_config& config) | ||
| 50 | +{ | ||
| 51 | + asc_fill_l1_impl(dst, value, config); | ||
| 52 | + asc_sync_post_process(); | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | +// asc_fill_l1_value float | ||
| 56 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ float* dst, half value, const asc_fill_value_config& config) | ||
| 57 | +{ | ||
| 58 | + if ASC_IS_AIC { | ||
| 59 | + create_cbuf_matrix(dst, config.config, value); | ||
| 60 | + } | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ float* dst, half value, const asc_fill_value_config& config) | ||
| 64 | +{ | ||
| 65 | + asc_fill_l1_impl(dst, value, config); | ||
| 66 | + asc_sync_post_process(); | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ float* dst, uint32_t value, const asc_fill_value_config& config) | ||
| 70 | +{ | ||
| 71 | + if ASC_IS_AIC { | ||
| 72 | + create_cbuf_matrix(dst, config.config, value); | ||
| 73 | + } | ||
| 74 | +} | ||
| 75 | + | ||
| 76 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ float* dst, uint32_t value, | ||
| 77 | + const asc_fill_value_config& config) | ||
| 78 | +{ | ||
| 79 | + asc_fill_l1_impl(dst, value, config); | ||
| 80 | + asc_sync_post_process(); | ||
| 81 | +} | ||
| 82 | + | ||
| 83 | +// asc_fill_l1_value int16_t | ||
| 84 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ int16_t* dst, half value, const asc_fill_value_config& config) | ||
| 85 | +{ | ||
| 86 | + if ASC_IS_AIC { | ||
| 87 | + create_cbuf_matrix(dst, config.config, value); | ||
| 88 | + } | ||
| 89 | +} | ||
| 90 | + | ||
| 91 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ int16_t* dst, half value, | ||
| 92 | + const asc_fill_value_config& config) | ||
| 93 | +{ | ||
| 94 | + asc_fill_l1_impl(dst, value, config); | ||
| 95 | + asc_sync_post_process(); | ||
| 96 | +} | ||
| 97 | + | ||
| 98 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ int16_t* dst, uint32_t value, | ||
| 99 | + const asc_fill_value_config& config) | ||
| 100 | +{ | ||
| 101 | + if ASC_IS_AIC { | ||
| 102 | + create_cbuf_matrix(dst, config.config, value); | ||
| 103 | + } | ||
| 104 | +} | ||
| 105 | + | ||
| 106 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ int16_t* dst, uint32_t value, | ||
| 107 | + const asc_fill_value_config& config) | ||
| 108 | +{ | ||
| 109 | + asc_fill_l1_impl(dst, value, config); | ||
| 110 | + asc_sync_post_process(); | ||
| 111 | +} | ||
| 112 | + | ||
| 113 | +// asc_fill_l1_value int32_t | ||
| 114 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ int32_t* dst, half value, const asc_fill_value_config& config) | ||
| 115 | +{ | ||
| 116 | + if ASC_IS_AIC { | ||
| 117 | + create_cbuf_matrix(dst, config.config, value); | ||
| 118 | + } | ||
| 119 | +} | ||
| 120 | + | ||
| 121 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ int32_t* dst, half value, | ||
| 122 | + const asc_fill_value_config& config) | ||
| 123 | +{ | ||
| 124 | + asc_fill_l1_impl(dst, value, config); | ||
| 125 | + asc_sync_post_process(); | ||
| 126 | +} | ||
| 127 | + | ||
| 128 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ int32_t* dst, uint32_t value, | ||
| 129 | + const asc_fill_value_config& config) | ||
| 130 | +{ | ||
| 131 | + if ASC_IS_AIC { | ||
| 132 | + create_cbuf_matrix(dst, config.config, value); | ||
| 133 | + } | ||
| 134 | +} | ||
| 135 | + | ||
| 136 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ int32_t* dst, uint32_t value, | ||
| 137 | + const asc_fill_value_config& config) | ||
| 138 | +{ | ||
| 139 | + asc_fill_l1_impl(dst, value, config); | ||
| 140 | + asc_sync_post_process(); | ||
| 141 | +} | ||
| 142 | + | ||
| 143 | +// asc_fill_l1_value uint16_t | ||
| 144 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ uint16_t* dst, half value, const asc_fill_value_config& config) | ||
| 145 | +{ | ||
| 146 | + if ASC_IS_AIC { | ||
| 147 | + create_cbuf_matrix(dst, config.config, value); | ||
| 148 | + } | ||
| 149 | +} | ||
| 150 | + | ||
| 151 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ uint16_t* dst, half value, | ||
| 152 | + const asc_fill_value_config& config) | ||
| 153 | +{ | ||
| 154 | + asc_fill_l1_impl(dst, value, config); | ||
| 155 | + asc_sync_post_process(); | ||
| 156 | +} | ||
| 157 | + | ||
| 158 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ uint16_t* dst, uint32_t value, | ||
| 159 | + const asc_fill_value_config& config) | ||
| 160 | +{ | ||
| 161 | + if ASC_IS_AIC { | ||
| 162 | + create_cbuf_matrix(dst, config.config, value); | ||
| 163 | + } | ||
| 164 | +} | ||
| 165 | + | ||
| 166 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ uint16_t* dst, uint32_t value, | ||
| 167 | + const asc_fill_value_config& config) | ||
| 168 | +{ | ||
| 169 | + asc_fill_l1_impl(dst, value, config); | ||
| 170 | + asc_sync_post_process(); | ||
| 171 | +} | ||
| 172 | + | ||
| 173 | +// asc_fill_l1_value uint32_t | ||
| 174 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ uint32_t* dst, half value, const asc_fill_value_config& config) | ||
| 175 | +{ | ||
| 176 | + if ASC_IS_AIC { | ||
| 177 | + create_cbuf_matrix(dst, config.config, value); | ||
| 178 | + } | ||
| 179 | +} | ||
| 180 | + | ||
| 181 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ uint32_t* dst, half value, | ||
| 182 | + const asc_fill_value_config& config) | ||
| 183 | +{ | ||
| 184 | + asc_fill_l1_impl(dst, value, config); | ||
| 185 | + asc_sync_post_process(); | ||
| 186 | +} | ||
| 187 | + | ||
| 188 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ uint32_t* dst, uint32_t value, | ||
| 189 | + const asc_fill_value_config& config) | ||
| 190 | +{ | ||
| 191 | + if ASC_IS_AIC { | ||
| 192 | + create_cbuf_matrix(dst, config.config, value); | ||
| 193 | + } | ||
| 194 | +} | ||
| 195 | + | ||
| 196 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ uint32_t* dst, uint32_t value, | ||
| 197 | + const asc_fill_value_config& config) | ||
| 198 | +{ | ||
| 199 | + asc_fill_l1_impl(dst, value, config); | ||
| 200 | + asc_sync_post_process(); | ||
| 201 | +} | ||
| 202 | + | ||
| 203 | +// asc_fill_l1_value bfloat16_t | ||
| 204 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ bfloat16_t* dst, bfloat16_t value, | ||
| 205 | + const asc_fill_value_config& config) | ||
| 206 | +{ | ||
| 207 | + if ASC_IS_AIC { | ||
| 208 | + create_cbuf_matrix_bf16(dst, config.config, value); | ||
| 209 | + } | ||
| 210 | +} | ||
| 211 | + | ||
| 212 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ bfloat16_t* dst, bfloat16_t value, | ||
| 213 | + const asc_fill_value_config& config) | ||
| 214 | +{ | ||
| 215 | + asc_fill_l1_impl(dst, value, config); | ||
| 216 | + asc_sync_post_process(); | ||
| 217 | +} | ||
| 218 | + | ||
| 219 | +// create_cbuf_matrix_h | ||
| 220 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ bfloat16_t* dst, half value, | ||
| 221 | + const asc_fill_value_config& config) | ||
| 222 | +{ | ||
| 223 | + if ASC_IS_AIC { | ||
| 224 | + create_cbuf_matrix_h(dst, config.config, value); | ||
| 225 | + } | ||
| 226 | +} | ||
| 227 | + | ||
| 228 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ bfloat16_t* dst, half value, | ||
| 229 | + const asc_fill_value_config& config) | ||
| 230 | +{ | ||
| 231 | + asc_fill_l1_impl(dst, value, config); | ||
| 232 | + asc_sync_post_process(); | ||
| 233 | +} | ||
| 234 | + | ||
| 235 | +// create_cbuf_matrix_ui | ||
| 236 | +__aicore__ inline void asc_fill_l1_impl(__cbuf__ bfloat16_t* dst, uint32_t value, | ||
| 237 | + const asc_fill_value_config& config) | ||
| 238 | +{ | ||
| 239 | + if ASC_IS_AIC { | ||
| 240 | + create_cbuf_matrix_ui(dst, config.config, value); | ||
| 241 | + } | ||
| 242 | +} | ||
| 243 | + | ||
| 244 | +__aicore__ inline void asc_fill_l1_sync_impl(__cbuf__ bfloat16_t* dst, uint32_t value, | ||
| 245 | + const asc_fill_value_config& config) | ||
| 246 | +{ | ||
| 247 | + asc_fill_l1_impl(dst, value, config); | ||
| 248 | + asc_sync_post_process(); | ||
| 249 | +} | ||
| 250 | + | ||
| 251 | + | ||
| 252 | + | ||
| 253 | + | ||
| 254 | + | ||
| 255 | + | ||
| 256 | + | ||
| @@ -22,6 +22,8 @@ | |||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | 24 | ||
| 25 | + | ||
| 26 | + | ||
| 25 | 27 | ||
| 26 | __aicore__ inline int64_t asc_get_ar_spr() | 28 | __aicore__ inline int64_t asc_get_ar_spr() |
| 27 | { | 29 | { |
| @@ -78,4 +80,15 @@ __aicore__ inline int64_t asc_get_core_id() | |||
| 78 | { | 80 | { |
| 79 | return asc_get_core_id_impl(); | 81 | return asc_get_core_id_impl(); |
| 80 | } | 82 | } |
| 81 | -#endif | 83 | + |
| 84 | +__aicore__ inline void asc_set_l0c2gm_channel_para(uint64_t config) | ||
| 85 | +{ | ||
| 86 | + asc_set_l0c2gm_channel_para_impl(config); | ||
| 87 | +} | ||
| 88 | + | ||
| 89 | +__aicore__ inline void asc_set_l3d_rpt_b(uint64_t config) | ||
| 90 | +{ | ||
| 91 | + asc_set_l3d_rpt_b_impl(config); | ||
| 92 | +} | ||
| 93 | + | ||
| 94 | + | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + "impl/c_api/instr_impl/npu_arch_3510/sys_var_impl/asc_set_l0c2gm_channel_para_impl.h is an internal header file and must not be used directly. Functions or variables defined in this file maybe removed in the future. Please use " | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | ||
| 21 | + | ||
| 22 | + | ||
| 23 | +__aicore__ inline void asc_set_l0c2gm_channel_para_impl(uint64_t config) | ||
| 24 | +{ | ||
| 25 | + set_channel_para(config); | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | + | ||
| 29 | + | ||
| 30 | + | ||
| 31 | + | ||
| 32 | + | ||
| @@ -30,6 +30,12 @@ __aicore__ inline void asc_set_atomic_add_float(); | |||
| 30 | 30 | ||
| 31 | __aicore__ inline void asc_set_atomic_max_float16(); | 31 | __aicore__ inline void asc_set_atomic_max_float16(); |
| 32 | 32 | ||
| 33 | +__aicore__ inline void asc_set_atomic_add_int(); | ||
| 34 | + | ||
| 35 | +__aicore__ inline void asc_set_atomic_add_int8(); | ||
| 36 | + | ||
| 37 | +__aicore__ inline void asc_set_atomic_add_int16(); | ||
| 38 | + | ||
| 33 | 39 | ||
| 34 | 40 | ||
| 35 | __aicore__ inline void asc_set_atomic_none(); | 41 | __aicore__ inline void asc_set_atomic_none(); |
| @@ -42,12 +48,6 @@ __aicore__ inline void asc_set_atomic_add_bfloat(); | |||
| 42 | 48 | ||
| 43 | __aicore__ inline void asc_set_atomic_add_float16(); | 49 | __aicore__ inline void asc_set_atomic_add_float16(); |
| 44 | 50 | ||
| 45 | -__aicore__ inline void asc_set_atomic_add_int(); | ||
| 46 | - | ||
| 47 | -__aicore__ inline void asc_set_atomic_add_int8(); | ||
| 48 | - | ||
| 49 | -__aicore__ inline void asc_set_atomic_add_int16(); | ||
| 50 | - | ||
| 51 | __aicore__ inline void asc_set_atomic_max_bfloat(); | 51 | __aicore__ inline void asc_set_atomic_max_bfloat(); |
| 52 | 52 | ||
| 53 | __aicore__ inline void asc_set_atomic_max_float(); | 53 | __aicore__ inline void asc_set_atomic_max_float(); |
| @@ -31,6 +31,190 @@ __aicore__ inline void asc_set_l13d_rpt(asc_load3d_v2_config& config); | |||
| 31 | 31 | ||
| 32 | __aicore__ inline void asc_set_l13d_fmatrix(asc_l13d_fmatrix_config& config); | 32 | __aicore__ inline void asc_set_l13d_fmatrix(asc_l13d_fmatrix_config& config); |
| 33 | 33 | ||
| 34 | +// ==========asc_copy_l12fb========== | ||
| 35 | +__aicore__ inline void asc_copy_l12fb(__fbuf__ void* dst, __cbuf__ void* src, uint16_t burst_num, uint16_t burst_len, | ||
| 36 | + uint16_t src_gap_size, uint16_t dst_gap_size); | ||
| 37 | + | ||
| 38 | +__aicore__ inline void asc_copy_l12fb(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size); | ||
| 39 | + | ||
| 40 | +__aicore__ inline void asc_copy_l12fb_sync(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size); | ||
| 41 | + | ||
| 42 | +//=============asc_copy_l12bt=============== | ||
| 43 | +// void -> uint64_t | ||
| 44 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ void* src, uint16_t conv_control, uint16_t n_burst, | ||
| 45 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap); | ||
| 46 | + | ||
| 47 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ void* src, uint32_t size); | ||
| 48 | + | ||
| 49 | +__aicore__ inline void asc_copy_l12bt_sync(uint64_t dst, __cbuf__ void* src, uint32_t size); | ||
| 50 | + | ||
| 51 | +// ==========asc_fill_l0a(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 52 | +__aicore__ inline void asc_fill_l0a(__ca__ half* dst, half value, const asc_fill_value_config& config); | ||
| 53 | + | ||
| 54 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ half* dst, half value, const asc_fill_value_config& config); | ||
| 55 | + | ||
| 56 | +__aicore__ inline void asc_fill_l0a(__ca__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 57 | + | ||
| 58 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 59 | + | ||
| 60 | +__aicore__ inline void asc_fill_l0a(__ca__ float* dst, half value, const asc_fill_value_config& config); | ||
| 61 | + | ||
| 62 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ float* dst, half value, const asc_fill_value_config& config); | ||
| 63 | + | ||
| 64 | +__aicore__ inline void asc_fill_l0a(__ca__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 65 | + | ||
| 66 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 67 | + | ||
| 68 | +__aicore__ inline void asc_fill_l0a(__ca__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 69 | + | ||
| 70 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 71 | + | ||
| 72 | +__aicore__ inline void asc_fill_l0a(__ca__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 73 | + | ||
| 74 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 75 | + | ||
| 76 | +__aicore__ inline void asc_fill_l0a(__ca__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 77 | + | ||
| 78 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 79 | + | ||
| 80 | +__aicore__ inline void asc_fill_l0a(__ca__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 81 | + | ||
| 82 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 83 | + | ||
| 84 | +__aicore__ inline void asc_fill_l0a(__ca__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 85 | + | ||
| 86 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 87 | + | ||
| 88 | +__aicore__ inline void asc_fill_l0a(__ca__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 89 | + | ||
| 90 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 91 | + | ||
| 92 | +__aicore__ inline void asc_fill_l0a(__ca__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 93 | + | ||
| 94 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 95 | + | ||
| 96 | +__aicore__ inline void asc_fill_l0a(__ca__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 97 | + | ||
| 98 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 99 | + | ||
| 100 | +__aicore__ inline void asc_fill_l0a(__ca__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 101 | + | ||
| 102 | +__aicore__ inline void asc_fill_l0a_sync(__ca__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 103 | + | ||
| 104 | +// ==========asc_fill_l0b(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 105 | +__aicore__ inline void asc_fill_l0b(__cb__ half* dst, half value, const asc_fill_value_config& config); | ||
| 106 | + | ||
| 107 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ half* dst, half value, const asc_fill_value_config& config); | ||
| 108 | + | ||
| 109 | +__aicore__ inline void asc_fill_l0b(__cb__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 110 | + | ||
| 111 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 112 | + | ||
| 113 | +__aicore__ inline void asc_fill_l0b(__cb__ float* dst, half value, const asc_fill_value_config& config); | ||
| 114 | + | ||
| 115 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ float* dst, half value, const asc_fill_value_config& config); | ||
| 116 | + | ||
| 117 | +__aicore__ inline void asc_fill_l0b(__cb__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 118 | + | ||
| 119 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 120 | + | ||
| 121 | +__aicore__ inline void asc_fill_l0b(__cb__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 122 | + | ||
| 123 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 124 | + | ||
| 125 | +__aicore__ inline void asc_fill_l0b(__cb__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 126 | + | ||
| 127 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 128 | + | ||
| 129 | +__aicore__ inline void asc_fill_l0b(__cb__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 130 | + | ||
| 131 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 132 | + | ||
| 133 | +__aicore__ inline void asc_fill_l0b(__cb__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 134 | + | ||
| 135 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 136 | + | ||
| 137 | +__aicore__ inline void asc_fill_l0b(__cb__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 138 | + | ||
| 139 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 140 | + | ||
| 141 | +__aicore__ inline void asc_fill_l0b(__cb__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 142 | + | ||
| 143 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 144 | + | ||
| 145 | +__aicore__ inline void asc_fill_l0b(__cb__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 146 | + | ||
| 147 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 148 | + | ||
| 149 | +__aicore__ inline void asc_fill_l0b(__cb__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 150 | + | ||
| 151 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 152 | + | ||
| 153 | +__aicore__ inline void asc_fill_l0b(__cb__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 154 | + | ||
| 155 | +__aicore__ inline void asc_fill_l0b_sync(__cb__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 156 | + | ||
| 157 | +// ==========asc_fill_l1(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 158 | +__aicore__ inline void asc_fill_l1(__cbuf__ half* dst, half value, const asc_fill_value_config& config); | ||
| 159 | + | ||
| 160 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ half* dst, half value, const asc_fill_value_config& config); | ||
| 161 | + | ||
| 162 | +__aicore__ inline void asc_fill_l1(__cbuf__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 163 | + | ||
| 164 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 165 | + | ||
| 166 | +__aicore__ inline void asc_fill_l1(__cbuf__ float* dst, half value, const asc_fill_value_config& config); | ||
| 167 | + | ||
| 168 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ float* dst, half value, const asc_fill_value_config& config); | ||
| 169 | + | ||
| 170 | +__aicore__ inline void asc_fill_l1(__cbuf__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 171 | + | ||
| 172 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 173 | + | ||
| 174 | +__aicore__ inline void asc_fill_l1(__cbuf__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 175 | + | ||
| 176 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 177 | + | ||
| 178 | +__aicore__ inline void asc_fill_l1(__cbuf__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 179 | + | ||
| 180 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 181 | + | ||
| 182 | +__aicore__ inline void asc_fill_l1(__cbuf__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 183 | + | ||
| 184 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 185 | + | ||
| 186 | +__aicore__ inline void asc_fill_l1(__cbuf__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 187 | + | ||
| 188 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 189 | + | ||
| 190 | +__aicore__ inline void asc_fill_l1(__cbuf__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 191 | + | ||
| 192 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 193 | + | ||
| 194 | +__aicore__ inline void asc_fill_l1(__cbuf__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 195 | + | ||
| 196 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 197 | + | ||
| 198 | +__aicore__ inline void asc_fill_l1(__cbuf__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 199 | + | ||
| 200 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 201 | + | ||
| 202 | +__aicore__ inline void asc_fill_l1(__cbuf__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 203 | + | ||
| 204 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 205 | + | ||
| 206 | +__aicore__ inline void asc_fill_l1(__cbuf__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 207 | + | ||
| 208 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 209 | + | ||
| 210 | +__aicore__ inline void asc_fill_l1(__cbuf__ bfloat16_t* dst, half value, const asc_fill_value_config& config); | ||
| 211 | + | ||
| 212 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, half value, const asc_fill_value_config& config); | ||
| 213 | + | ||
| 214 | +__aicore__ inline void asc_fill_l1(__cbuf__ bfloat16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 215 | + | ||
| 216 | +__aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 217 | + | ||
| 34 | 218 | ||
| 35 | 219 | ||
| 36 | // ==========asc_copy_gm2l1========== | 220 | // ==========asc_copy_gm2l1========== |
| @@ -202,14 +386,6 @@ __aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ uint32_t* dst, __gm__ | |||
| 202 | uint16_t n_value, uint16_t d_value, uint16_t src_nd_matrix_stride, uint16_t src_d_value, uint16_t dst_nz_c0_stride, | 386 | uint16_t n_value, uint16_t d_value, uint16_t src_nd_matrix_stride, uint16_t src_d_value, uint16_t dst_nz_c0_stride, |
| 203 | uint16_t dst_nz_n_stride, uint16_t dst_nz_matrix_stride); | 387 | uint16_t dst_nz_n_stride, uint16_t dst_nz_matrix_stride); |
| 204 | 388 | ||
| 205 | -// ==========asc_copy_l12fb========== | ||
| 206 | -__aicore__ inline void asc_copy_l12fb(__fbuf__ void* dst, __cbuf__ void* src, uint16_t burst_num, uint16_t burst_len, | ||
| 207 | - uint16_t src_gap_size, uint16_t dst_gap_size); | ||
| 208 | - | ||
| 209 | -__aicore__ inline void asc_copy_l12fb(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size); | ||
| 210 | - | ||
| 211 | -__aicore__ inline void asc_copy_l12fb_sync(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size); | ||
| 212 | - | ||
| 213 | // ==========asc_copy_l12l0b, 2D, int4b_t/uint8_t/int8_t/half/bfloat16_t/uint32_t/int32_t/float========== | 389 | // ==========asc_copy_l12l0b, 2D, int4b_t/uint8_t/int8_t/half/bfloat16_t/uint32_t/int32_t/float========== |
| 214 | __aicore__ inline void asc_copy_l12l0b(__cb__ int4b_t* dst, __cbuf__ int4b_t* src, | 390 | __aicore__ inline void asc_copy_l12l0b(__cb__ int4b_t* dst, __cbuf__ int4b_t* src, |
| 215 | uint16_t start_index, uint8_t repeat, uint16_t src_stride, uint16_t dst_gap); | 391 | uint16_t start_index, uint8_t repeat, uint16_t src_stride, uint16_t dst_gap); |
| @@ -528,188 +704,6 @@ __aicore__ inline void asc_load_image_to_cbuf_sync(__cbuf__ int8_t* dst, uint16_ | |||
| 528 | uint16_t hor_start_pos, uint16_t ver_start_pos, uint16_t src_hor_size, uint8_t top_pad_size, uint8_t bot_pad_size, | 704 | uint16_t hor_start_pos, uint16_t ver_start_pos, uint16_t src_hor_size, uint8_t top_pad_size, uint8_t bot_pad_size, |
| 529 | uint16_t left_pad_size, uint16_t right_pad_size); | 705 | uint16_t left_pad_size, uint16_t right_pad_size); |
| 530 | 706 | ||
| 531 | -// ==========asc_fill_l0a(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 532 | -__aicore__ inline void asc_fill_l0a(__ca__ half* dst, half value, const asc_fill_value_config& config); | ||
| 533 | - | ||
| 534 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ half* dst, half value, const asc_fill_value_config& config); | ||
| 535 | - | ||
| 536 | -__aicore__ inline void asc_fill_l0a(__ca__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 537 | - | ||
| 538 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 539 | - | ||
| 540 | -__aicore__ inline void asc_fill_l0a(__ca__ float* dst, half value, const asc_fill_value_config& config); | ||
| 541 | - | ||
| 542 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ float* dst, half value, const asc_fill_value_config& config); | ||
| 543 | - | ||
| 544 | -__aicore__ inline void asc_fill_l0a(__ca__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 545 | - | ||
| 546 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 547 | - | ||
| 548 | -__aicore__ inline void asc_fill_l0a(__ca__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 549 | - | ||
| 550 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 551 | - | ||
| 552 | -__aicore__ inline void asc_fill_l0a(__ca__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 553 | - | ||
| 554 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 555 | - | ||
| 556 | -__aicore__ inline void asc_fill_l0a(__ca__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 557 | - | ||
| 558 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 559 | - | ||
| 560 | -__aicore__ inline void asc_fill_l0a(__ca__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 561 | - | ||
| 562 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 563 | - | ||
| 564 | -__aicore__ inline void asc_fill_l0a(__ca__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 565 | - | ||
| 566 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 567 | - | ||
| 568 | -__aicore__ inline void asc_fill_l0a(__ca__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 569 | - | ||
| 570 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 571 | - | ||
| 572 | -__aicore__ inline void asc_fill_l0a(__ca__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 573 | - | ||
| 574 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 575 | - | ||
| 576 | -__aicore__ inline void asc_fill_l0a(__ca__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 577 | - | ||
| 578 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 579 | - | ||
| 580 | -__aicore__ inline void asc_fill_l0a(__ca__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 581 | - | ||
| 582 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 583 | - | ||
| 584 | -__aicore__ inline void asc_fill_l0a(__ca__ bfloat16_t* dst, half value, const asc_fill_value_config& config); | ||
| 585 | - | ||
| 586 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ bfloat16_t* dst, half value, const asc_fill_value_config& config); | ||
| 587 | - | ||
| 588 | -__aicore__ inline void asc_fill_l0a(__ca__ bfloat16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 589 | - | ||
| 590 | -__aicore__ inline void asc_fill_l0a_sync(__ca__ bfloat16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 591 | - | ||
| 592 | -// ==========asc_fill_l0b(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 593 | -__aicore__ inline void asc_fill_l0b(__cb__ half* dst, half value, const asc_fill_value_config& config); | ||
| 594 | - | ||
| 595 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ half* dst, half value, const asc_fill_value_config& config); | ||
| 596 | - | ||
| 597 | -__aicore__ inline void asc_fill_l0b(__cb__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 598 | - | ||
| 599 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 600 | - | ||
| 601 | -__aicore__ inline void asc_fill_l0b(__cb__ float* dst, half value, const asc_fill_value_config& config); | ||
| 602 | - | ||
| 603 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ float* dst, half value, const asc_fill_value_config& config); | ||
| 604 | - | ||
| 605 | -__aicore__ inline void asc_fill_l0b(__cb__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 606 | - | ||
| 607 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 608 | - | ||
| 609 | -__aicore__ inline void asc_fill_l0b(__cb__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 610 | - | ||
| 611 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 612 | - | ||
| 613 | -__aicore__ inline void asc_fill_l0b(__cb__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 614 | - | ||
| 615 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 616 | - | ||
| 617 | -__aicore__ inline void asc_fill_l0b(__cb__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 618 | - | ||
| 619 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 620 | - | ||
| 621 | -__aicore__ inline void asc_fill_l0b(__cb__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 622 | - | ||
| 623 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 624 | - | ||
| 625 | -__aicore__ inline void asc_fill_l0b(__cb__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 626 | - | ||
| 627 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 628 | - | ||
| 629 | -__aicore__ inline void asc_fill_l0b(__cb__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 630 | - | ||
| 631 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 632 | - | ||
| 633 | -__aicore__ inline void asc_fill_l0b(__cb__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 634 | - | ||
| 635 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 636 | - | ||
| 637 | -__aicore__ inline void asc_fill_l0b(__cb__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 638 | - | ||
| 639 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 640 | - | ||
| 641 | -__aicore__ inline void asc_fill_l0b(__cb__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 642 | - | ||
| 643 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 644 | - | ||
| 645 | -__aicore__ inline void asc_fill_l0b(__cb__ bfloat16_t* dst, half value, const asc_fill_value_config& config); | ||
| 646 | - | ||
| 647 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ bfloat16_t* dst, half value, const asc_fill_value_config& config); | ||
| 648 | - | ||
| 649 | -__aicore__ inline void asc_fill_l0b(__cb__ bfloat16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 650 | - | ||
| 651 | -__aicore__ inline void asc_fill_l0b_sync(__cb__ bfloat16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 652 | - | ||
| 653 | -// ==========asc_fill_l1(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 654 | -__aicore__ inline void asc_fill_l1(__cbuf__ half* dst, half value, const asc_fill_value_config& config); | ||
| 655 | - | ||
| 656 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ half* dst, half value, const asc_fill_value_config& config); | ||
| 657 | - | ||
| 658 | -__aicore__ inline void asc_fill_l1(__cbuf__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 659 | - | ||
| 660 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ half* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 661 | - | ||
| 662 | -__aicore__ inline void asc_fill_l1(__cbuf__ float* dst, half value, const asc_fill_value_config& config); | ||
| 663 | - | ||
| 664 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ float* dst, half value, const asc_fill_value_config& config); | ||
| 665 | - | ||
| 666 | -__aicore__ inline void asc_fill_l1(__cbuf__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 667 | - | ||
| 668 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ float* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 669 | - | ||
| 670 | -__aicore__ inline void asc_fill_l1(__cbuf__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 671 | - | ||
| 672 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ int16_t* dst, half value, const asc_fill_value_config& config); | ||
| 673 | - | ||
| 674 | -__aicore__ inline void asc_fill_l1(__cbuf__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 675 | - | ||
| 676 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ int16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 677 | - | ||
| 678 | -__aicore__ inline void asc_fill_l1(__cbuf__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 679 | - | ||
| 680 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ int32_t* dst, half value, const asc_fill_value_config& config); | ||
| 681 | - | ||
| 682 | -__aicore__ inline void asc_fill_l1(__cbuf__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 683 | - | ||
| 684 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ int32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 685 | - | ||
| 686 | -__aicore__ inline void asc_fill_l1(__cbuf__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 687 | - | ||
| 688 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint16_t* dst, half value, const asc_fill_value_config& config); | ||
| 689 | - | ||
| 690 | -__aicore__ inline void asc_fill_l1(__cbuf__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 691 | - | ||
| 692 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint16_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 693 | - | ||
| 694 | -__aicore__ inline void asc_fill_l1(__cbuf__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 695 | - | ||
| 696 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint32_t* dst, half value, const asc_fill_value_config& config); | ||
| 697 | - | ||
| 698 | -__aicore__ inline void asc_fill_l1(__cbuf__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 699 | - | ||
| 700 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ uint32_t* dst, uint32_t value, const asc_fill_value_config& config); | ||
| 701 | - | ||
| 702 | -__aicore__ inline void asc_fill_l1(__cbuf__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 703 | - | ||
| 704 | -__aicore__ inline void asc_fill_l1_sync(__cbuf__ bfloat16_t* dst, bfloat16_t value, const asc_fill_value_config& config); | ||
| 705 | - | ||
| 706 | -__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ void* src, uint16_t conv_control, uint16_t n_burst, | ||
| 707 | - uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap); | ||
| 708 | - | ||
| 709 | -__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ void* src, uint32_t size); | ||
| 710 | - | ||
| 711 | -__aicore__ inline void asc_copy_l12bt_sync(uint64_t dst, __cbuf__ void* src, uint32_t size); | ||
| 712 | - | ||
| 713 | __aicore__ inline void asc_set_l0c_copy_prequant(uint64_t config); | 707 | __aicore__ inline void asc_set_l0c_copy_prequant(uint64_t config); |
| 714 | 708 | ||
| 715 | __aicore__ inline void asc_set_l0c_copy_params(uint16_t nd_num, uint16_t src_nd_stride, uint16_t dst_nd_stride); | 709 | __aicore__ inline void asc_set_l0c_copy_params(uint16_t nd_num, uint16_t src_nd_stride, uint16_t dst_nd_stride); |
| @@ -1283,6 +1277,7 @@ __aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ uint16_t* dst, __gm__ | |||
| 1283 | uint32_t d_value, uint64_t loop4_src_stride, bool smallc0_en); | 1277 | uint32_t d_value, uint64_t loop4_src_stride, bool smallc0_en); |
| 1284 | 1278 | ||
| 1285 | __aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ uint32_t* dst, __gm__ uint32_t* src, uint64_t loop1_src_stride, uint8_t l2_cache_ctl, uint16_t n_value, | 1279 | __aicore__ inline void asc_copy_gm2l1_nd2nz(__cbuf__ uint32_t* dst, __gm__ uint32_t* src, uint64_t loop1_src_stride, uint8_t l2_cache_ctl, uint16_t n_value, |
| 1280 | + | ||
| 1286 | uint32_t d_value, uint64_t loop4_src_stride, bool smallc0_en); | 1281 | uint32_t d_value, uint64_t loop4_src_stride, bool smallc0_en); |
| 1287 | 1282 | ||
| 1288 | __aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ uint32_t* dst, __gm__ uint32_t* src, uint64_t loop1_src_stride, uint8_t l2_cache_ctl, uint16_t n_value, | 1283 | __aicore__ inline void asc_copy_gm2l1_nd2nz_sync(__cbuf__ uint32_t* dst, __gm__ uint32_t* src, uint64_t loop1_src_stride, uint8_t l2_cache_ctl, uint16_t n_value, |
| @@ -1300,6 +1295,675 @@ __aicore__ inline void asc_copy_gm2l1(__cbuf__ void* dst, __gm__ void* src, uint | |||
| 1300 | 1295 | ||
| 1301 | __aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ void* dst, __gm__ void* src, uint32_t n_burst, uint32_t len_burst, uint8_t pad_func_mode, | 1296 | __aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ void* dst, __gm__ void* src, uint32_t n_burst, uint32_t len_burst, uint8_t pad_func_mode, |
| 1302 | uint64_t src_stride, uint32_t dst_stride); | 1297 | uint64_t src_stride, uint32_t dst_stride); |
| 1298 | + | ||
| 1299 | +//=============asc_copy_l12bt=============== | ||
| 1300 | +// bfloat16_t -> uint64_t | ||
| 1301 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ bfloat16_t* src, uint16_t conv_control, uint16_t n_burst, | ||
| 1302 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap); | ||
| 1303 | + | ||
| 1304 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ bfloat16_t* src, uint32_t size); | ||
| 1305 | + | ||
| 1306 | +__aicore__ inline void asc_copy_l12bt_sync(uint64_t dst, __cbuf__ bfloat16_t* src, uint32_t size); | ||
| 1307 | + | ||
| 1308 | +// half -> uint64_t | ||
| 1309 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ half* src, uint16_t conv_control, uint16_t n_burst, | ||
| 1310 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap); | ||
| 1311 | + | ||
| 1312 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ half* src, uint32_t size); | ||
| 1313 | + | ||
| 1314 | +__aicore__ inline void asc_copy_l12bt_sync(uint64_t dst, __cbuf__ half* src, uint32_t size); | ||
| 1315 | + | ||
| 1316 | +// float -> uint64_t | ||
| 1317 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ float* src, uint16_t conv_control, uint16_t n_burst, | ||
| 1318 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap); | ||
| 1319 | + | ||
| 1320 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ float* src, uint32_t size); | ||
| 1321 | + | ||
| 1322 | +__aicore__ inline void asc_copy_l12bt_sync(uint64_t dst, __cbuf__ float* src, uint32_t size); | ||
| 1323 | + | ||
| 1324 | +// int32_t -> uint64_t | ||
| 1325 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ int32_t* src, uint16_t conv_control, uint16_t n_burst, | ||
| 1326 | + uint16_t len_burst, uint16_t source_gap, uint16_t dst_gap); | ||
| 1327 | + | ||
| 1328 | +__aicore__ inline void asc_copy_l12bt(uint64_t dst, __cbuf__ int32_t* src, uint32_t size); | ||
| 1329 | + | ||
| 1330 | +__aicore__ inline void asc_copy_l12bt_sync(uint64_t dst, __cbuf__ int32_t* src, uint32_t size); | ||
| 1331 | + | ||
| 1332 | +// =============asc_copy_l12fb_v2=============== | ||
| 1333 | +__aicore__ inline void asc_copy_l12fb_v2(__fbuf__ void * dst, __cbuf__ void * src, uint16_t burst_num, | ||
| 1334 | + uint16_t burst_len, uint16_t src_stride, uint16_t dst_stride); | ||
| 1335 | + | ||
| 1336 | +__aicore__ inline void asc_copy_l12fb_v2(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size); | ||
| 1337 | + | ||
| 1338 | +__aicore__ inline void asc_copy_l12fb_v2_sync(__fbuf__ void* dst, __cbuf__ void* src, uint32_t size); | ||
| 1339 | + | ||
| 1340 | +// =============asc_copy_l12ub=============== | ||
| 1341 | +__aicore__ inline void asc_copy_l12ub(__ubuf__ void * dst_addr, __cbuf__ void * src_addr, bool sub_blockid, | ||
| 1342 | + uint16_t burst_num, uint16_t burst_len, uint16_t src_gap, uint16_t dst_gap); | ||
| 1343 | + | ||
| 1344 | +__aicore__ inline void asc_copy_l12ub_sync(__ubuf__ void * dst_addr, __cbuf__ void * src_addr, bool sub_blockid, | ||
| 1345 | + uint16_t burst_num, uint16_t burst_len, uint16_t src_gap, uint16_t dst_gap); | ||
| 1346 | + | ||
| 1347 | +//=============asc_copy_l0c2l1=============== | ||
| 1348 | +__aicore__ inline void asc_copy_l0c2l1(__cbuf__ void *dst_addr, __cc__ float *src_addr, uint16_t n_size, | ||
| 1349 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 1350 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1351 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1352 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1353 | + | ||
| 1354 | +__aicore__ inline void asc_copy_l0c2l1_sync(__cbuf__ void *dst_addr, __cc__ float *src_addr, uint16_t n_size, | ||
| 1355 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 1356 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1357 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1358 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1359 | + | ||
| 1360 | +__aicore__ inline void asc_copy_l0c2l1(__cbuf__ void *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, | ||
| 1361 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 1362 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1363 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1364 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1365 | + | ||
| 1366 | +__aicore__ inline void asc_copy_l0c2l1_sync(__cbuf__ void *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, | ||
| 1367 | + uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, | ||
| 1368 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1369 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1370 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1371 | + | ||
| 1372 | +// ==========asc_copy_l0c2gm=========== | ||
| 1373 | +// bfloat16_t float | ||
| 1374 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ bfloat16_t *dst_addr, __cc__ float *src_addr, | ||
| 1375 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1376 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1377 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1378 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1379 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1380 | + | ||
| 1381 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ bfloat16_t* dst_addr, __cc__ float* src_addr, | ||
| 1382 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1383 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1384 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1385 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1386 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1387 | + | ||
| 1388 | +// half float | ||
| 1389 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ half *dst_addr, __cc__ float *src_addr, | ||
| 1390 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1391 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1392 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1393 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1394 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1395 | + | ||
| 1396 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ half* dst_addr, __cc__ float* src_addr, | ||
| 1397 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1398 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1399 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1400 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1401 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1402 | + | ||
| 1403 | +// float8_e4m3_t float | ||
| 1404 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ float8_e4m3_t *dst_addr, __cc__ float *src_addr, | ||
| 1405 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1406 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1407 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1408 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1409 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1410 | + | ||
| 1411 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ float8_e4m3_t* dst_addr, __cc__ float* src_addr, | ||
| 1412 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1413 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1414 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1415 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1416 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1417 | + | ||
| 1418 | +// float8_e5m2_t float | ||
| 1419 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ float8_e5m2_t *dst_addr, __cc__ float *src_addr, | ||
| 1420 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1421 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1422 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1423 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1424 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1425 | + | ||
| 1426 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ float8_e5m2_t* dst_addr, __cc__ float* src_addr, | ||
| 1427 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1428 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1429 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1430 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1431 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1432 | + | ||
| 1433 | +// hifloat8_t float | ||
| 1434 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ hifloat8_t *dst_addr, __cc__ float *src_addr, | ||
| 1435 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1436 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1437 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1438 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1439 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1440 | + | ||
| 1441 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ hifloat8_t* dst_addr, __cc__ float* src_addr, | ||
| 1442 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1443 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1444 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1445 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1446 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1447 | + | ||
| 1448 | +// int8_t float | ||
| 1449 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ int8_t *dst_addr, __cc__ float *src_addr, | ||
| 1450 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1451 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1452 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1453 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1454 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1455 | + | ||
| 1456 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ int8_t* dst_addr, __cc__ float* src_addr, | ||
| 1457 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1458 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1459 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1460 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1461 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1462 | + | ||
| 1463 | +// uint8_t float | ||
| 1464 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ uint8_t *dst_addr, __cc__ float *src_addr, | ||
| 1465 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1466 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1467 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1468 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1469 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1470 | + | ||
| 1471 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ uint8_t* dst_addr, __cc__ float* src_addr, | ||
| 1472 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1473 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1474 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1475 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1476 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1477 | + | ||
| 1478 | +// float float | ||
| 1479 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ float *dst_addr, __cc__ float *src_addr, | ||
| 1480 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1481 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1482 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1483 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1484 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1485 | + | ||
| 1486 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ float* dst_addr, __cc__ float* src_addr, | ||
| 1487 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1488 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1489 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1490 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1491 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1492 | + | ||
| 1493 | +// bfloat16_t int32_t | ||
| 1494 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ bfloat16_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1495 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1496 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1497 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1498 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1499 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1500 | + | ||
| 1501 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ bfloat16_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1502 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1503 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1504 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1505 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1506 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1507 | +// half int32_t | ||
| 1508 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ half *dst_addr, __cc__ int32_t *src_addr, | ||
| 1509 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1510 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1511 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1512 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1513 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1514 | + | ||
| 1515 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ half* dst_addr, __cc__ int32_t* src_addr, | ||
| 1516 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1517 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1518 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1519 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1520 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1521 | + | ||
| 1522 | +// float8_e4m3_t int32_t | ||
| 1523 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ float8_e4m3_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1524 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1525 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1526 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1527 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1528 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1529 | + | ||
| 1530 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ float8_e4m3_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1531 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1532 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1533 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1534 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1535 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1536 | + | ||
| 1537 | +// float8_e5m2_t int32_t | ||
| 1538 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ float8_e5m2_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1539 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1540 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1541 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1542 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1543 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1544 | + | ||
| 1545 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ float8_e5m2_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1546 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1547 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1548 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1549 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1550 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1551 | + | ||
| 1552 | +// hifloat8_t int32_t | ||
| 1553 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ hifloat8_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1554 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1555 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1556 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1557 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1558 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1559 | + | ||
| 1560 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ hifloat8_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1561 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1562 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1563 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1564 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1565 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1566 | + | ||
| 1567 | +// int8_t int32_t | ||
| 1568 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ int8_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1569 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1570 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1571 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1572 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1573 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1574 | + | ||
| 1575 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ int8_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1576 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1577 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1578 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1579 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1580 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1581 | + | ||
| 1582 | +// uint8_t int32_t | ||
| 1583 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ uint8_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1584 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1585 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1586 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1587 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1588 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1589 | + | ||
| 1590 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ uint8_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1591 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1592 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1593 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1594 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1595 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1596 | + | ||
| 1597 | +// int32_t int32_t | ||
| 1598 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ int32_t *dst_addr, __cc__ int32_t *src_addr, | ||
| 1599 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1600 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1601 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1602 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1603 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1604 | + | ||
| 1605 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ int32_t* dst_addr, __cc__ int32_t* src_addr, | ||
| 1606 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1607 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1608 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1609 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1610 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1611 | + | ||
| 1612 | +// void float | ||
| 1613 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ void *dst_addr, __cc__ float *src_addr, | ||
| 1614 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1615 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1616 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1617 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1618 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1619 | + | ||
| 1620 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ void* dst_addr, __cc__ float* src_addr, | ||
| 1621 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1622 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1623 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1624 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1625 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1626 | + | ||
| 1627 | +// void int32_t | ||
| 1628 | +__aicore__ inline void asc_copy_l0c2gm(__gm__ void *dst_addr, __cc__ int32_t *src_addr, | ||
| 1629 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1630 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1631 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1632 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1633 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1634 | + | ||
| 1635 | +__aicore__ inline void asc_copy_l0c2gm_sync(__gm__ void* dst_addr, __cc__ int32_t* src_addr, | ||
| 1636 | + uint16_t n_size, uint16_t m_size, uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, | ||
| 1637 | + uint8_t clip_relu_pre, uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, | ||
| 1638 | + bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, | ||
| 1639 | + uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 1640 | + bool broadcast_en, bool NZ2DN_en); | ||
| 1641 | + | ||
| 1642 | +// ==========asc_copy_l0c2ub=========== | ||
| 1643 | +// bfloat16_t float | ||
| 1644 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ bfloat16_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1645 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1646 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1647 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1648 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1649 | + | ||
| 1650 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ bfloat16_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1651 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1652 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1653 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1654 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1655 | + | ||
| 1656 | +// half float | ||
| 1657 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ half *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1658 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1659 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1660 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1661 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1662 | + | ||
| 1663 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ half* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1664 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1665 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1666 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1667 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1668 | + | ||
| 1669 | +// float8_e4m3_t float | ||
| 1670 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ float8_e4m3_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1671 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1672 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1673 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1674 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1675 | + | ||
| 1676 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ float8_e4m3_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1677 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1678 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1679 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1680 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1681 | + | ||
| 1682 | +// float8_e5m2_t float | ||
| 1683 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ float8_e5m2_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1684 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1685 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1686 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1687 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1688 | + | ||
| 1689 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ float8_e5m2_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1690 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1691 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1692 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1693 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1694 | + | ||
| 1695 | +// hifloat8_t float | ||
| 1696 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ hifloat8_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1697 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1698 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1699 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1700 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1701 | + | ||
| 1702 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ hifloat8_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1703 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1704 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1705 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1706 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1707 | + | ||
| 1708 | +// int8 float | ||
| 1709 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ int8_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1710 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1711 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1712 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1713 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1714 | + | ||
| 1715 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ int8_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1716 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1717 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1718 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1719 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1720 | + | ||
| 1721 | +// uint8 float | ||
| 1722 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ uint8_t *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1723 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1724 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1725 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1726 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1727 | + | ||
| 1728 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ uint8_t* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1729 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1730 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1731 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1732 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1733 | + | ||
| 1734 | +// float float | ||
| 1735 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ float *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1736 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1737 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1738 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1739 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1740 | + | ||
| 1741 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ float* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1742 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1743 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1744 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1745 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1746 | + | ||
| 1747 | +// bfloat16_t int32_t | ||
| 1748 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ bfloat16_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1749 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1750 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1751 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1752 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1753 | + | ||
| 1754 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ bfloat16_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1755 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1756 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1757 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1758 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1759 | + | ||
| 1760 | +// half int32_t | ||
| 1761 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ half *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1762 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1763 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1764 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1765 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1766 | + | ||
| 1767 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ half* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1768 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1769 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1770 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1771 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1772 | + | ||
| 1773 | +// float8_e4m3_t int32_t | ||
| 1774 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ float8_e4m3_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1775 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1776 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1777 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1778 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1779 | + | ||
| 1780 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ float8_e4m3_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1781 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1782 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1783 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1784 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1785 | + | ||
| 1786 | +// float8_e5m2_t int32_t | ||
| 1787 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ float8_e5m2_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1788 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1789 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1790 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1791 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1792 | + | ||
| 1793 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ float8_e5m2_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1794 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1795 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1796 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1797 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1798 | + | ||
| 1799 | +// hifloat8_t int32_t | ||
| 1800 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ hifloat8_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1801 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1802 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1803 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1804 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1805 | + | ||
| 1806 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ hifloat8_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1807 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1808 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1809 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1810 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1811 | + | ||
| 1812 | +// int8 int32_t | ||
| 1813 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ int8_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1814 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1815 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1816 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1817 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1818 | + | ||
| 1819 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ int8_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1820 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1821 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1822 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1823 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1824 | + | ||
| 1825 | +// uint8 int32_t | ||
| 1826 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ uint8_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1827 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1828 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1829 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1830 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1831 | + | ||
| 1832 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ uint8_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1833 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1834 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1835 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1836 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1837 | + | ||
| 1838 | +// int32_t int32_t | ||
| 1839 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ int32_t *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1840 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1841 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1842 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1843 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1844 | + | ||
| 1845 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ int32_t* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1846 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1847 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1848 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1849 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1850 | + | ||
| 1851 | +// void float | ||
| 1852 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ void *dst_addr, __cc__ float *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1853 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1854 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1855 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1856 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1857 | + | ||
| 1858 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ void* dst_addr, __cc__ float* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1859 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1860 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1861 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1862 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1863 | + | ||
| 1864 | +// void int32_t | ||
| 1865 | +__aicore__ inline void asc_copy_l0c2ub(__ubuf__ void *dst_addr, __cc__ int32_t *src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1866 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1867 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1868 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1869 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1870 | + | ||
| 1871 | +__aicore__ inline void asc_copy_l0c2ub_sync(__ubuf__ void* dst_addr, __cc__ int32_t* src_addr, uint16_t n_size, uint16_t m_size, | ||
| 1872 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, | ||
| 1873 | + uint8_t unit_flag_ctl, uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, | ||
| 1874 | + uint8_t relu_post, bool clip_relu_post, bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, | ||
| 1875 | + bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, bool broadcast_en, bool NZ2DN_en); | ||
| 1876 | + | ||
| 1877 | +// ==========asc_copy_gm2l1=========== | ||
| 1878 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ bfloat16_t* dst, __gm__ bfloat16_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1879 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1880 | + | ||
| 1881 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ bfloat16_t* dst, __gm__ bfloat16_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1882 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1883 | + | ||
| 1884 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ float* dst, __gm__ float* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1885 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1886 | + | ||
| 1887 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ float* dst, __gm__ float* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1888 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1889 | + | ||
| 1890 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ float8_e4m3_t* dst, __gm__ float8_e4m3_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1891 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1892 | + | ||
| 1893 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ float8_e4m3_t* dst, __gm__ float8_e4m3_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1894 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1895 | + | ||
| 1896 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ float8_e5m2_t* dst, __gm__ float8_e5m2_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1897 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1898 | + | ||
| 1899 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ float8_e5m2_t* dst, __gm__ float8_e5m2_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1900 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1901 | + | ||
| 1902 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ half* dst, __gm__ half* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1903 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1904 | + | ||
| 1905 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ half* dst, __gm__ half* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1906 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1907 | + | ||
| 1908 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ hifloat8_t* dst, __gm__ hifloat8_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1909 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1910 | + | ||
| 1911 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ hifloat8_t* dst, __gm__ hifloat8_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1912 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1913 | + | ||
| 1914 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ int16_t* dst, __gm__ int16_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1915 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1916 | + | ||
| 1917 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ int16_t* dst, __gm__ int16_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1918 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1919 | + | ||
| 1920 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ int32_t* dst, __gm__ int32_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1921 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1922 | + | ||
| 1923 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ int32_t* dst, __gm__ int32_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1924 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1925 | + | ||
| 1926 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ int8_t* dst, __gm__ int8_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1927 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1928 | + | ||
| 1929 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ int8_t* dst, __gm__ int8_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1930 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1931 | + | ||
| 1932 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ uint16_t* dst, __gm__ uint16_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1933 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1934 | + | ||
| 1935 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ uint16_t* dst, __gm__ uint16_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1936 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1937 | + | ||
| 1938 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ uint32_t* dst, __gm__ uint32_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1939 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1940 | + | ||
| 1941 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ uint32_t* dst, __gm__ uint32_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1942 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1943 | + | ||
| 1944 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ uint8_t* dst, __gm__ uint8_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1945 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1946 | + | ||
| 1947 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ uint8_t* dst, __gm__ uint8_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1948 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1949 | + | ||
| 1950 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ float4_e1m2x2_t* dst, __gm__ float4_e1m2x2_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1951 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1952 | + | ||
| 1953 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ float4_e1m2x2_t* dst, __gm__ float4_e1m2x2_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1954 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1955 | + | ||
| 1956 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ float4_e2m1x2_t* dst, __gm__ float4_e2m1x2_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1957 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1958 | + | ||
| 1959 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ float4_e2m1x2_t* dst, __gm__ float4_e2m1x2_t* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1960 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1961 | + | ||
| 1962 | +__aicore__ inline void asc_copy_gm2l1(__cbuf__ void* dst, __gm__ void* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1963 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1964 | + | ||
| 1965 | +__aicore__ inline void asc_copy_gm2l1_sync(__cbuf__ void* dst, __gm__ void* src, uint32_t m_start_position, uint32_t k_start_position, | ||
| 1966 | + uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t decomp_mode, uint8_t l2_cache_ctl); | ||
| 1303 | 1967 | ||
| 1304 | 1968 | ||
| 1305 | 1969 | ||
| @@ -69,6 +69,11 @@ __aicore__ inline void asc_get_arch_ver(uint32_t& coreVersion); | |||
| 69 | 69 | ||
| 70 | __aicore__ inline int64_t asc_get_core_id(); | 70 | __aicore__ inline int64_t asc_get_core_id(); |
| 71 | 71 | ||
| 72 | +__aicore__ inline void asc_set_l0c2gm_channel_para(uint64_t config); | ||
| 73 | + | ||
| 74 | +__aicore__ inline void asc_set_l3d_rpt_b(uint64_t config); | ||
| 75 | + | ||
| 76 | + | ||
| 72 | 77 | ||
| 73 | 78 | ||
| 74 | 79 | ||
| @@ -89,4 +89,6 @@ TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, ui | |||
| 89 | TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint16_t, uint32_t); | 89 | TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint16_t, uint32_t); |
| 90 | TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint32_t, half); | 90 | TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint32_t, half); |
| 91 | TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint32_t, uint32_t); | 91 | TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint32_t, uint32_t); |
| 92 | -TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_bf16, bfloat16_t, bfloat16_t); | 92 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_bf16, bfloat16_t, bfloat16_t); |
| 93 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_h, bfloat16_t, half); | ||
| 94 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_ui, bfloat16_t, uint32_t); | ||
| @@ -0,0 +1,35 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | +class TestSimdAtomicSetAtomicAddInt : public testing::Test { | ||
| 18 | +protected: | ||
| 19 | + void SetUp() {} | ||
| 20 | + void TearDown() {} | ||
| 21 | +}; | ||
| 22 | + | ||
| 23 | +TEST_F(TestSimdAtomicSetAtomicAddInt, set_atomic_add_int_Succ) | ||
| 24 | +{ | ||
| 25 | + MOCKER(set_atomic_add, void(void)) | ||
| 26 | + .times(1) | ||
| 27 | + .will(ignoreReturnValue()); | ||
| 28 | + | ||
| 29 | + MOCKER(set_atomic_s32, void(void)) | ||
| 30 | + .times(1) | ||
| 31 | + .will(ignoreReturnValue()); | ||
| 32 | + | ||
| 33 | + asc_set_atomic_add_int(); | ||
| 34 | + GlobalMockObject::verify(); | ||
| 35 | +} | ||
| @@ -0,0 +1,35 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | +class TestSimdAtomicSetAtomicAddInt16 : public testing::Test { | ||
| 18 | +protected: | ||
| 19 | + void SetUp() {} | ||
| 20 | + void TearDown() {} | ||
| 21 | +}; | ||
| 22 | + | ||
| 23 | +TEST_F(TestSimdAtomicSetAtomicAddInt16, set_atomic_add_int16_Succ) | ||
| 24 | +{ | ||
| 25 | + MOCKER(set_atomic_add, void(void)) | ||
| 26 | + .times(1) | ||
| 27 | + .will(ignoreReturnValue()); | ||
| 28 | + | ||
| 29 | + MOCKER(set_atomic_s16, void(void)) | ||
| 30 | + .times(1) | ||
| 31 | + .will(ignoreReturnValue()); | ||
| 32 | + | ||
| 33 | + asc_set_atomic_add_int16(); | ||
| 34 | + GlobalMockObject::verify(); | ||
| 35 | +} | ||
| @@ -0,0 +1,35 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | +class TestSimdAtomicSetAtomicAddInt8 : public testing::Test { | ||
| 18 | +protected: | ||
| 19 | + void SetUp() {} | ||
| 20 | + void TearDown() {} | ||
| 21 | +}; | ||
| 22 | + | ||
| 23 | +TEST_F(TestSimdAtomicSetAtomicAddInt8, set_atomic_add_int8_Succ) | ||
| 24 | +{ | ||
| 25 | + MOCKER(set_atomic_add, void(void)) | ||
| 26 | + .times(1) | ||
| 27 | + .will(ignoreReturnValue()); | ||
| 28 | + | ||
| 29 | + MOCKER(set_atomic_s8, void(void)) | ||
| 30 | + .times(1) | ||
| 31 | + .will(ignoreReturnValue()); | ||
| 32 | + | ||
| 33 | + asc_set_atomic_add_int8(); | ||
| 34 | + GlobalMockObject::verify(); | ||
| 35 | +} | ||
| @@ -8,11 +8,88 @@ | |||
| 8 | * See LICENSE in the root of the software repository for the full text of the License. | 8 | * See LICENSE in the root of the software repository for the full text of the License. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | + | ||
| 11 | 12 | ||
| 12 | 13 | ||
| 13 | 14 | ||
| 14 | 15 | ||
| 15 | 16 | ||
| 17 | +class TestCubeDatamoveCopyGM2L1 : public testing::Test { | ||
| 18 | + protected: | ||
| 19 | + void SetUp() { | ||
| 20 | + g_coreType = C_API_AIC_TYPE; | ||
| 21 | + } | ||
| 22 | + void TearDown() { | ||
| 23 | + g_coreType = C_API_AIV_TYPE; | ||
| 24 | + } | ||
| 25 | + }; | ||
| 26 | + | ||
| 27 | +template<typename DTYPE> | ||
| 28 | +void load_gm_to_cbuf_2dv2_Stub(__cbuf__ DTYPE* dst_in, __gm__ DTYPE* src_in, uint32_t m_start_position_in, | ||
| 29 | + uint32_t k_start_position_in, uint16_t dst_stride_in, uint16_t m_step_in, | ||
| 30 | + uint16_t k_step_in, uint8_t sid_in, uint8_t decomp_mode_in, uint8_t l2_cache_ctl_in) | ||
| 31 | +{ | ||
| 32 | + __cbuf__ DTYPE* dst = reinterpret_cast<__cbuf__ DTYPE*>(1); | ||
| 33 | + __gm__ DTYPE* src = reinterpret_cast<__gm__ DTYPE*>(2); | ||
| 34 | + uint32_t m_start_position = 3; | ||
| 35 | + uint32_t k_start_position = 4; | ||
| 36 | + uint16_t dst_stride = 5; | ||
| 37 | + uint16_t m_step = 6; | ||
| 38 | + uint16_t k_step = 7; | ||
| 39 | + uint8_t sid = 0; | ||
| 40 | + uint8_t decomp_mode = 8; | ||
| 41 | + uint8_t l2_cache_ctl = 9; | ||
| 42 | + | ||
| 43 | + EXPECT_EQ(dst, dst_in); | ||
| 44 | + EXPECT_EQ(src, src_in); | ||
| 45 | + EXPECT_EQ(m_start_position, m_start_position_in); | ||
| 46 | + EXPECT_EQ(k_start_position, k_start_position_in); | ||
| 47 | + EXPECT_EQ(dst_stride, dst_stride_in); | ||
| 48 | + EXPECT_EQ(m_step, m_step_in); | ||
| 49 | + EXPECT_EQ(k_step, k_step_in); | ||
| 50 | + EXPECT_EQ(sid, sid_in); | ||
| 51 | + EXPECT_EQ(decomp_mode, decomp_mode_in); | ||
| 52 | + EXPECT_EQ(l2_cache_ctl, l2_cache_ctl_in); | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | + | ||
| 56 | +TEST_F(TestCubeDatamoveCopyGM2L1, c_api_name##_##data_type##_Succ) \ | ||
| 57 | +{ \ | ||
| 58 | + __cbuf__ data_type * dst = reinterpret_cast<__cbuf__ data_type *>(1); \ | ||
| 59 | + __gm__ data_type * src = reinterpret_cast<__gm__ data_type *>(2); \ | ||
| 60 | + uint32_t m_start_position = 3; \ | ||
| 61 | + uint32_t k_start_position = 4; \ | ||
| 62 | + uint16_t dst_stride = 5; \ | ||
| 63 | + uint16_t m_step = 6; \ | ||
| 64 | + uint16_t k_step = 7; \ | ||
| 65 | + uint8_t decomp_mode = 8; \ | ||
| 66 | + uint8_t l2_cache_ctl = 9; \ | ||
| 67 | + MOCKER(cce_name, void(__cbuf__ data_type*, __gm__ data_type*, uint32_t, uint32_t, uint16_t, uint16_t, uint16_t, uint8_t, uint8_t, uint8_t)) \ | ||
| 68 | + .times(1) \ | ||
| 69 | + .will(invoke(&load_gm_to_cbuf_2dv2_Stub<data_type>)); \ | ||
| 70 | + c_api_name(dst, src, m_start_position, k_start_position, dst_stride, m_step, k_step, decomp_mode, l2_cache_ctl); \ | ||
| 71 | + GlobalMockObject::verify(); \ | ||
| 72 | +} | ||
| 73 | + | ||
| 74 | +// asc_copy_gm2l1 tests | ||
| 75 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, bfloat16_t); | ||
| 76 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, float); | ||
| 77 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, float8_e4m3_t); | ||
| 78 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, float8_e5m2_t); | ||
| 79 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, half); | ||
| 80 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, hifloat8_t); | ||
| 81 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, int16_t); | ||
| 82 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, int32_t); | ||
| 83 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, int8_t); | ||
| 84 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, uint16_t); | ||
| 85 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, uint32_t); | ||
| 86 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2, uint8_t); | ||
| 87 | + | ||
| 88 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2_s4, float4_e1m2x2_t); | ||
| 89 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2_s4, float4_e2m1x2_t); | ||
| 90 | +TEST_CUBE_DATAMOVE_GM2L1(GM2L1, asc_copy_gm2l1, load_gm_to_cbuf_2dv2_s4, void); | ||
| 91 | + | ||
| 92 | + | ||
| 16 | __aicore__ inline void copy_gm_to_cbuf_v2_stub(__cbuf__ void* dst, __gm__ void* src, uint8_t sid, uint32_t n_burst, uint32_t len_burst, uint8_t pad_func_mode, | 93 | __aicore__ inline void copy_gm_to_cbuf_v2_stub(__cbuf__ void* dst, __gm__ void* src, uint8_t sid, uint32_t n_burst, uint32_t len_burst, uint8_t pad_func_mode, |
| 17 | uint64_t src_stride, uint32_t dst_stride) { | 94 | uint64_t src_stride, uint32_t dst_stride) { |
| 18 | EXPECT_EQ(dst, reinterpret_cast<__cbuf__ void *>(11)); | 95 | EXPECT_EQ(dst, reinterpret_cast<__cbuf__ void *>(11)); |
| @@ -0,0 +1,83 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | +class TestCubeDatamoveCopyL0C2GM : public testing::Test { | ||
| 20 | + protected: | ||
| 21 | + void SetUp() { | ||
| 22 | + g_coreType = C_API_AIC_TYPE; | ||
| 23 | + } | ||
| 24 | + void TearDown() { | ||
| 25 | + g_coreType = C_API_AIV_TYPE; | ||
| 26 | + } | ||
| 27 | + }; | ||
| 28 | + | ||
| 29 | + | ||
| 30 | +TEST_F(TestCubeDatamoveCopyL0C2GM, c_api_name##_##dst_data_type##_##src_data_type##_Succ) \ | ||
| 31 | +{ \ | ||
| 32 | + __cbuf__ dst_data_type * dst = reinterpret_cast<__cbuf__ dst_data_type *>(1); \ | ||
| 33 | + __cc__ src_data_type * src = reinterpret_cast<__cc__ src_data_type *>(2); \ | ||
| 34 | + uint16_t n_size = 3; \ | ||
| 35 | + uint16_t m_size = 4; \ | ||
| 36 | + uint32_t loop_dst_stride = 6; \ | ||
| 37 | + uint16_t loop_src_stride = 7; \ | ||
| 38 | + uint8_t l2_cache_ctl = 5; \ | ||
| 39 | + uint8_t clip_relu_pre = 8; \ | ||
| 40 | + uint8_t unit_flag_ctl = 10; \ | ||
| 41 | + uint64_t quant_pre = 11; \ | ||
| 42 | + uint8_t relu_pre = 12; \ | ||
| 43 | + bool split_en = true; \ | ||
| 44 | + bool NZ2ND_en = true; \ | ||
| 45 | + uint64_t quant_post = 13; \ | ||
| 46 | + uint8_t relu_post = 14; \ | ||
| 47 | + bool clip_relu_post = true; \ | ||
| 48 | + bool loop_enhance_en = true; \ | ||
| 49 | + uint8_t eltwise_op = 15; \ | ||
| 50 | + bool eltwise_antq_en = true; \ | ||
| 51 | + bool loop_enhance_merge_en = true; \ | ||
| 52 | + bool C0_pad_en = true; \ | ||
| 53 | + bool wino_post_en = false; \ | ||
| 54 | + bool broadcast_en = false; \ | ||
| 55 | + bool NZ2DN_en = false; \ | ||
| 56 | + c_api_name(dst, src, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, \ | ||
| 57 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, \ | ||
| 58 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, \ | ||
| 59 | + broadcast_en, NZ2DN_en); \ | ||
| 60 | + GlobalMockObject::verify(); \ | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | + | ||
| 64 | + | ||
| 65 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, half, float); | ||
| 66 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, bfloat16_t, float); | ||
| 67 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, float8_e4m3_t, float); | ||
| 68 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, float8_e5m2_t, float); | ||
| 69 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, hifloat8_t, float); | ||
| 70 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, int8_t, float); | ||
| 71 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, uint8_t, float); | ||
| 72 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, float, float); | ||
| 73 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, half, int32_t); | ||
| 74 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, bfloat16_t, int32_t); | ||
| 75 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, float8_e4m3_t, int32_t); | ||
| 76 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, float8_e5m2_t, int32_t); | ||
| 77 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, hifloat8_t, int32_t); | ||
| 78 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, int8_t, int32_t); | ||
| 79 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, uint8_t, int32_t); | ||
| 80 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, int32_t, int32_t); | ||
| 81 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, void, float); | ||
| 82 | +TEST_CUBE_DATAMOVE_L0C2GM(L0C2GM, asc_copy_l0c2gm, copy_matrix_cc_to_gm, void, int32_t); | ||
| 83 | + | ||
| @@ -0,0 +1,84 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + | ||
| 18 | + | ||
| 19 | +class TestCubeDatamoveCopyL0C2UB : public testing::Test { \ | ||
| 20 | + protected: | ||
| 21 | + void SetUp() { | ||
| 22 | + g_coreType = C_API_AIC_TYPE; | ||
| 23 | + } | ||
| 24 | + void TearDown() { | ||
| 25 | + g_coreType = C_API_AIV_TYPE; | ||
| 26 | + } | ||
| 27 | + }; | ||
| 28 | + | ||
| 29 | + | ||
| 30 | +TEST_F(TestCubeDatamoveCopyL0C2UB, c_api_name##_##dst_data_type##_##src_data_type##_Succ) \ | ||
| 31 | +{ \ | ||
| 32 | + __ubuf__ dst_data_type * dst = reinterpret_cast<__ubuf__ dst_data_type *>(1); \ | ||
| 33 | + __cc__ src_data_type * src = reinterpret_cast<__cc__ src_data_type *>(2); \ | ||
| 34 | + uint16_t n_size = 3; \ | ||
| 35 | + uint16_t m_size = 4; \ | ||
| 36 | + uint32_t loop_dst_stride = 6; \ | ||
| 37 | + uint16_t loop_src_stride = 7; \ | ||
| 38 | + uint8_t dual_dst_ctl = 5; \ | ||
| 39 | + bool sub_blockid = true; \ | ||
| 40 | + uint8_t clip_relu_pre = 8; \ | ||
| 41 | + uint8_t unit_flag_ctl = 10; \ | ||
| 42 | + uint64_t quant_pre = 11; \ | ||
| 43 | + uint8_t relu_pre = 12; \ | ||
| 44 | + bool split_en = true; \ | ||
| 45 | + bool NZ2ND_en = true; \ | ||
| 46 | + uint64_t quant_post = 13; \ | ||
| 47 | + uint8_t relu_post = 14; \ | ||
| 48 | + bool clip_relu_post = true; \ | ||
| 49 | + bool loop_enhance_en = true; \ | ||
| 50 | + uint8_t eltwise_op = 15; \ | ||
| 51 | + bool eltwise_antq_en = true; \ | ||
| 52 | + bool loop_enhance_merge_en = true; \ | ||
| 53 | + bool C0_pad_en = true; \ | ||
| 54 | + bool wino_post_en = false; \ | ||
| 55 | + bool broadcast_en = false; \ | ||
| 56 | + bool NZ2DN_en = false; \ | ||
| 57 | + c_api_name(dst, src, n_size, m_size, loop_dst_stride, loop_src_stride, dual_dst_ctl, sub_blockid, clip_relu_pre, \ | ||
| 58 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, \ | ||
| 59 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, \ | ||
| 60 | + broadcast_en, NZ2DN_en); \ | ||
| 61 | + GlobalMockObject::verify(); \ | ||
| 62 | +} | ||
| 63 | + | ||
| 64 | + | ||
| 65 | + | ||
| 66 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, half, float); | ||
| 67 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, bfloat16_t, float); | ||
| 68 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, float8_e4m3_t, float); | ||
| 69 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, float8_e5m2_t, float); | ||
| 70 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, hifloat8_t, float); | ||
| 71 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, int8_t, float); | ||
| 72 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, uint8_t, float); | ||
| 73 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, float, float); | ||
| 74 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, half, int32_t); | ||
| 75 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, bfloat16_t, int32_t); | ||
| 76 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, float8_e4m3_t, int32_t); | ||
| 77 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, float8_e5m2_t, int32_t); | ||
| 78 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, hifloat8_t, int32_t); | ||
| 79 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, int8_t, int32_t); | ||
| 80 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, uint8_t, int32_t); | ||
| 81 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, int32_t, int32_t); | ||
| 82 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, void, float); | ||
| 83 | +TEST_CUBE_DATAMOVE_L0C2UB(L0C2UB, asc_copy_l0c2ub, copy_matrix_cc_to_ub, void, int32_t); | ||
| 84 | + | ||
| @@ -0,0 +1,104 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +class TestCubeDatamoveCopyL12Bt : public testing::Test { | ||
| 17 | +protected: | ||
| 18 | + void SetUp() { | ||
| 19 | + g_coreType = C_API_AIC_TYPE; | ||
| 20 | + } | ||
| 21 | + void TearDown() { | ||
| 22 | + g_coreType = C_API_AIV_TYPE; | ||
| 23 | + } | ||
| 24 | +}; | ||
| 25 | + | ||
| 26 | +namespace { | ||
| 27 | +template<typename DTYPE> | ||
| 28 | +void copy_cbuf_to_bt_Stub(uint64_t dst_in, __cbuf__ DTYPE* src_in, uint16_t conv_control_in, uint16_t n_burst_in, | ||
| 29 | + uint16_t len_burst_in, uint16_t source_gap_in, uint16_t dst_gap_in) | ||
| 30 | +{ | ||
| 31 | + uint64_t dst = 1; | ||
| 32 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 33 | + uint16_t conv_control = 3; | ||
| 34 | + uint16_t n_burst = 4; | ||
| 35 | + uint16_t len_burst = 5; | ||
| 36 | + uint16_t source_gap = 6; | ||
| 37 | + uint16_t dst_gap = 7; | ||
| 38 | + EXPECT_EQ(dst, dst_in); | ||
| 39 | + EXPECT_EQ(src, src_in); | ||
| 40 | + EXPECT_EQ(conv_control, conv_control_in); | ||
| 41 | + EXPECT_EQ(n_burst, n_burst_in); | ||
| 42 | + EXPECT_EQ(len_burst, len_burst_in); | ||
| 43 | + EXPECT_EQ(source_gap, source_gap_in); | ||
| 44 | + EXPECT_EQ(dst_gap, dst_gap_in); | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +template<typename DTYPE> | ||
| 48 | +void copy_cbuf_to_bt_size_Stub(uint64_t dst_in, __cbuf__ DTYPE* src_in, uint16_t conv_control_in, uint16_t n_burst_in, | ||
| 49 | + uint16_t len_burst_in, uint16_t source_gap_in, uint16_t dst_gap_in) | ||
| 50 | +{ | ||
| 51 | + uint64_t dst = 1; | ||
| 52 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 53 | + uint16_t conv_control = 0; | ||
| 54 | + uint16_t n_burst = 1; | ||
| 55 | + uint16_t len_burst = 44 / ASC_C_API_ONE_DATABLOCK_SIZE; | ||
| 56 | + uint16_t source_gap = 0; | ||
| 57 | + uint16_t dst_gap = 0; | ||
| 58 | + EXPECT_EQ(dst, dst_in); | ||
| 59 | + EXPECT_EQ(src, src_in); | ||
| 60 | + EXPECT_EQ(conv_control, conv_control_in); | ||
| 61 | + EXPECT_EQ(n_burst, n_burst_in); | ||
| 62 | + EXPECT_EQ(len_burst, len_burst_in); | ||
| 63 | + EXPECT_EQ(source_gap, source_gap_in); | ||
| 64 | + EXPECT_EQ(dst_gap, dst_gap_in); | ||
| 65 | +} | ||
| 66 | + | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | + | ||
| 70 | +TEST_F(TestCubeDatamoveCopyL12Bt, asc_copy_l12bt_##DTYPE##_Succ) \ | ||
| 71 | +{ \ | ||
| 72 | + uint64_t dst = 1; \ | ||
| 73 | + __cbuf__ DTYPE* src = reinterpret_cast<__cbuf__ DTYPE*>(2); \ | ||
| 74 | + uint16_t conv_control = 3; \ | ||
| 75 | + uint16_t n_burst = 4; \ | ||
| 76 | + uint16_t len_burst = 5; \ | ||
| 77 | + uint16_t source_gap = 6; \ | ||
| 78 | + uint16_t dst_gap = 7; \ | ||
| 79 | + \ | ||
| 80 | + MOCKER(copy_cbuf_to_bt, void(uint64_t, __cbuf__ DTYPE*, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)) \ | ||
| 81 | + .times(1) \ | ||
| 82 | + .will(invoke(©_cbuf_to_bt_Stub<DTYPE>)); \ | ||
| 83 | + \ | ||
| 84 | + asc_copy_l12bt(dst, src, conv_control, n_burst, len_burst, source_gap, dst_gap); \ | ||
| 85 | + GlobalMockObject::verify(); \ | ||
| 86 | +} \ | ||
| 87 | +TEST_F(TestCubeDatamoveCopyL12Bt, asc_copy_l12bt_size_##DTYPE##_Succ) \ | ||
| 88 | +{ \ | ||
| 89 | + uint64_t dst = 1; \ | ||
| 90 | + __cbuf__ DTYPE* src = reinterpret_cast<__cbuf__ DTYPE*>(2); \ | ||
| 91 | + uint32_t size = 44; \ | ||
| 92 | + MOCKER(copy_cbuf_to_bt, void(uint64_t, __cbuf__ DTYPE*, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)) \ | ||
| 93 | + .times(1) \ | ||
| 94 | + .will(invoke(©_cbuf_to_bt_size_Stub<DTYPE>)); \ | ||
| 95 | + \ | ||
| 96 | + asc_copy_l12bt(dst, src, size); \ | ||
| 97 | + GlobalMockObject::verify(); \ | ||
| 98 | +} | ||
| 99 | + | ||
| 100 | +TEST_CUBE_DATAMOVE_COPY_L12BT(void) | ||
| 101 | +TEST_CUBE_DATAMOVE_COPY_L12BT(bfloat16_t) | ||
| 102 | +TEST_CUBE_DATAMOVE_COPY_L12BT(half) | ||
| 103 | +TEST_CUBE_DATAMOVE_COPY_L12BT(float) | ||
| 104 | +TEST_CUBE_DATAMOVE_COPY_L12BT(int32_t) | ||
| @@ -0,0 +1,92 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +class TestCubeDmamoveCopyL12FbV2CAPI : public testing::Test { | ||
| 17 | +protected: | ||
| 18 | + void SetUp() { | ||
| 19 | + g_coreType = C_API_AIC_TYPE; | ||
| 20 | + } | ||
| 21 | + void TearDown() { | ||
| 22 | + g_coreType = C_API_AIV_TYPE; | ||
| 23 | + } | ||
| 24 | +}; | ||
| 25 | + | ||
| 26 | +namespace { | ||
| 27 | +void copy_cbuf_to_fbuf_v2_Stub(__fbuf__ void* dst_in, __cbuf__ void* src_in, uint16_t burst_num_in, uint16_t burst_len_in, | ||
| 28 | + uint16_t src_stride, uint16_t dst_stride) | ||
| 29 | +{ | ||
| 30 | + __fbuf__ void* dst = reinterpret_cast<__fbuf__ void*>(1); | ||
| 31 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 32 | + uint16_t burst_num = 3; | ||
| 33 | + uint16_t burst_len = 4; | ||
| 34 | + uint16_t src_gap_size = 5; | ||
| 35 | + uint16_t dst_gap_size = 6; | ||
| 36 | + EXPECT_EQ(dst, dst_in); | ||
| 37 | + EXPECT_EQ(src, src_in); | ||
| 38 | + EXPECT_EQ(burst_num, burst_num_in); | ||
| 39 | + EXPECT_EQ(burst_len, burst_len_in); | ||
| 40 | + EXPECT_EQ(src_gap_size, src_stride); | ||
| 41 | + EXPECT_EQ(dst_gap_size, dst_stride); | ||
| 42 | +} | ||
| 43 | + | ||
| 44 | +void copy_cbuf_to_fbuf_v2_size_Stub(__fbuf__ void* dst_in, __cbuf__ void* src_in, uint16_t burst_num_in, uint16_t burst_len_in, | ||
| 45 | + uint16_t src_stride, uint16_t dst_stride) | ||
| 46 | +{ | ||
| 47 | + __fbuf__ void* dst = reinterpret_cast<__fbuf__ void*>(1); | ||
| 48 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 49 | + uint16_t burst_num = 1; | ||
| 50 | + uint16_t burst_len = 44 / ASC_C_API_ONE_DATABLOCK_SIZE; | ||
| 51 | + uint16_t src_gap_size = 0; | ||
| 52 | + uint16_t dst_gap_size = 0; | ||
| 53 | + EXPECT_EQ(dst, dst_in); | ||
| 54 | + EXPECT_EQ(src, src_in); | ||
| 55 | + EXPECT_EQ(burst_num, burst_num_in); | ||
| 56 | + EXPECT_EQ(burst_len, burst_len_in); | ||
| 57 | + EXPECT_EQ(src_gap_size, src_stride); | ||
| 58 | + EXPECT_EQ(dst_gap_size, dst_stride); | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +TEST_F(TestCubeDmamoveCopyL12FbV2CAPI, c_api_asc_copy_l12fb_Succ) | ||
| 64 | +{ | ||
| 65 | + __fbuf__ void* dst = reinterpret_cast<__fbuf__ void*>(1); | ||
| 66 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 67 | + uint16_t burst_num = 3; | ||
| 68 | + uint16_t burst_len = 4; | ||
| 69 | + uint16_t src_gap_size = 5; | ||
| 70 | + uint16_t dst_gap_size = 6; | ||
| 71 | + | ||
| 72 | + MOCKER(copy_cbuf_to_fbuf_v2, void(__fbuf__ void*, __cbuf__ void*, uint16_t, uint16_t, uint16_t, uint16_t)) | ||
| 73 | + .times(1) | ||
| 74 | + .will(invoke(copy_cbuf_to_fbuf_v2_Stub)); | ||
| 75 | + | ||
| 76 | + asc_copy_l12fb_v2(dst, src, burst_num, burst_len, src_gap_size, dst_gap_size); | ||
| 77 | + GlobalMockObject::verify(); | ||
| 78 | +} | ||
| 79 | + | ||
| 80 | +TEST_F(TestCubeDmamoveCopyL12FbV2CAPI, c_api_asc_copy_l12fb_size_Succ) | ||
| 81 | +{ | ||
| 82 | + __fbuf__ void* dst = reinterpret_cast<__fbuf__ void*>(1); | ||
| 83 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 84 | + uint32_t size = 44; | ||
| 85 | + | ||
| 86 | + MOCKER(copy_cbuf_to_fbuf_v2, void(__fbuf__ void*, __cbuf__ void*, uint16_t, uint16_t, uint16_t, uint16_t)) | ||
| 87 | + .times(1) | ||
| 88 | + .will(invoke(copy_cbuf_to_fbuf_v2_size_Stub)); | ||
| 89 | + | ||
| 90 | + asc_copy_l12fb_v2(dst, src, size); | ||
| 91 | + GlobalMockObject::verify(); | ||
| 92 | +} | ||
| @@ -0,0 +1,64 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +class TestCubeDmamoveCopyL12UBCAPI : public testing::Test { | ||
| 17 | +protected: | ||
| 18 | + void SetUp() { | ||
| 19 | + g_coreType = C_API_AIC_TYPE; | ||
| 20 | + } | ||
| 21 | + void TearDown() { | ||
| 22 | + g_coreType = C_API_AIV_TYPE; | ||
| 23 | + } | ||
| 24 | +}; | ||
| 25 | + | ||
| 26 | +namespace { | ||
| 27 | +void copy_cbuf_to_ubuf_Stub(__ubuf__ void* dst_in, __cbuf__ void* src_in, bool sub_blockid_in, | ||
| 28 | + uint16_t burst_num_in, uint16_t burst_len_in, uint16_t src_gap, uint16_t dst_gap) | ||
| 29 | +{ | ||
| 30 | + __ubuf__ void* dst = reinterpret_cast<__ubuf__ void*>(1); | ||
| 31 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 32 | + bool sub_blockid = false; | ||
| 33 | + uint16_t burst_num = 3; | ||
| 34 | + uint16_t burst_len = 4; | ||
| 35 | + uint16_t src_gap_size = 5; | ||
| 36 | + uint16_t dst_gap_size = 6; | ||
| 37 | + EXPECT_EQ(dst, dst_in); | ||
| 38 | + EXPECT_EQ(src, src_in); | ||
| 39 | + EXPECT_EQ(sub_blockid, sub_blockid_in); | ||
| 40 | + EXPECT_EQ(burst_num, burst_num_in); | ||
| 41 | + EXPECT_EQ(burst_len, burst_len_in); | ||
| 42 | + EXPECT_EQ(src_gap_size, src_gap); | ||
| 43 | + EXPECT_EQ(dst_gap_size, dst_gap); | ||
| 44 | +} | ||
| 45 | + | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +TEST_F(TestCubeDmamoveCopyL12UBCAPI, c_api_asc_copy_l12ub_Succ) | ||
| 49 | +{ | ||
| 50 | + __ubuf__ void* dst = reinterpret_cast<__ubuf__ void*>(1); | ||
| 51 | + __cbuf__ void* src = reinterpret_cast<__cbuf__ void*>(2); | ||
| 52 | + bool sub_blockid = false; | ||
| 53 | + uint16_t burst_num = 3; | ||
| 54 | + uint16_t burst_len = 4; | ||
| 55 | + uint16_t src_gap_size = 5; | ||
| 56 | + uint16_t dst_gap_size = 6; | ||
| 57 | + | ||
| 58 | + MOCKER(copy_cbuf_to_ubuf, void(__ubuf__ void*, __cbuf__ void*, bool, uint16_t, uint16_t, uint16_t, uint16_t)) | ||
| 59 | + .times(1) | ||
| 60 | + .will(invoke(copy_cbuf_to_ubuf_Stub)); | ||
| 61 | + | ||
| 62 | + asc_copy_l12ub(dst, src, sub_blockid, burst_num, burst_len, src_gap_size, dst_gap_size); | ||
| 63 | + GlobalMockObject::verify(); | ||
| 64 | +} | ||
| @@ -18,7 +18,7 @@ | |||
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | \ | 20 | \ |
| 21 | -class TestCubeDatamove##class_name##_##dst_data_type##src_data_type : public testing::Test { \ | 21 | +class TestCubeDatamove##class_name##_##dst_data_type##_##src_data_type : public testing::Test { \ |
| 22 | protected: \ | 22 | protected: \ |
| 23 | void SetUp() { \ | 23 | void SetUp() { \ |
| 24 | g_coreType = C_API_AIC_TYPE; \ | 24 | g_coreType = C_API_AIC_TYPE; \ |
| @@ -75,7 +75,7 @@ void c_api_name##_##dst_data_type##_##src_data_type##_Stub(__cbuf__ dst_data_typ | |||
| 75 | } \ | 75 | } \ |
| 76 | } \ | 76 | } \ |
| 77 | \ | 77 | \ |
| 78 | -TEST_F(TestCubeDatamove##class_name##_##dst_data_type##src_data_type, c_api_name_##dst_data_type##_##src_data_type##_Succ) \ | 78 | +TEST_F(TestCubeDatamove##class_name##_##dst_data_type##_##src_data_type, c_api_name##dst_data_type##_##src_data_type##_Succ) \ |
| 79 | { \ | 79 | { \ |
| 80 | __cbuf__ dst_data_type * dst = reinterpret_cast<__cbuf__ dst_data_type *>(1); \ | 80 | __cbuf__ dst_data_type * dst = reinterpret_cast<__cbuf__ dst_data_type *>(1); \ |
| 81 | __cc__ src_data_type * src = reinterpret_cast<__cc__ src_data_type *>(2); \ | 81 | __cc__ src_data_type * src = reinterpret_cast<__cc__ src_data_type *>(2); \ |
| @@ -103,13 +103,61 @@ TEST_F(TestCubeDatamove##class_name##_##dst_data_type##src_data_type, c_api_name | |||
| 103 | GlobalMockObject::verify(); \ | 103 | GlobalMockObject::verify(); \ |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | +// copy_matrix_cc_to_cbuf_s4 | ||
| 107 | + | ||
| 108 | +class TestCubeDatamoveS4##class_name##_##dst_data_type##_##src_data_type : public testing::Test { \ | ||
| 109 | + protected: \ | ||
| 110 | + void SetUp() { \ | ||
| 111 | + g_coreType = C_API_AIC_TYPE; \ | ||
| 112 | + } \ | ||
| 113 | + void TearDown() { \ | ||
| 114 | + g_coreType = C_API_AIV_TYPE; \ | ||
| 115 | + } \ | ||
| 116 | + }; \ | ||
| 117 | +TEST_F(TestCubeDatamoveS4##class_name##_##dst_data_type##_##src_data_type, c_api_name##_##dst_data_type##_##src_data_type##_Succ) \ | ||
| 118 | +{ \ | ||
| 119 | + __cbuf__ dst_data_type * dst = reinterpret_cast<__cbuf__ dst_data_type *>(1); \ | ||
| 120 | + __cc__ src_data_type * src = reinterpret_cast<__cc__ src_data_type *>(2); \ | ||
| 121 | + uint16_t n_size = 3; \ | ||
| 122 | + uint16_t m_size = 4; \ | ||
| 123 | + uint32_t loop_dst_stride = 6; \ | ||
| 124 | + uint16_t loop_src_stride = 7; \ | ||
| 125 | + uint8_t l2_cache_ctl = 5; \ | ||
| 126 | + uint8_t clip_relu_pre = 8; \ | ||
| 127 | + uint8_t unit_flag_ctl = 10; \ | ||
| 128 | + uint64_t quant_pre = 11; \ | ||
| 129 | + uint8_t relu_pre = 12; \ | ||
| 130 | + bool split_en = true; \ | ||
| 131 | + bool NZ2ND_en = true; \ | ||
| 132 | + uint64_t quant_post = 13; \ | ||
| 133 | + uint8_t relu_post = 14; \ | ||
| 134 | + bool clip_relu_post = true; \ | ||
| 135 | + bool loop_enhance_en = true; \ | ||
| 136 | + uint8_t eltwise_op = 15; \ | ||
| 137 | + bool eltwise_antq_en = true; \ | ||
| 138 | + bool loop_enhance_merge_en = true; \ | ||
| 139 | + bool C0_pad_en = true; \ | ||
| 140 | + bool wino_post_en = false; \ | ||
| 141 | + bool broadcast_en = false; \ | ||
| 142 | + bool NZ2DN_en = false; \ | ||
| 143 | + c_api_name(dst, src, n_size, m_size, loop_dst_stride, loop_src_stride, l2_cache_ctl, clip_relu_pre, \ | ||
| 144 | + unit_flag_ctl, quant_pre, relu_pre, split_en, NZ2ND_en, quant_post, relu_post, clip_relu_post, \ | ||
| 145 | + loop_enhance_en, eltwise_op, eltwise_antq_en, loop_enhance_merge_en, C0_pad_en, wino_post_en, \ | ||
| 146 | + broadcast_en, NZ2DN_en); \ | ||
| 147 | + GlobalMockObject::verify(); \ | ||
| 148 | +} | ||
| 149 | + | ||
| 106 | 150 | ||
| 107 | 151 | ||
| 108 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, half, float); | 152 | + |
| 109 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, int8_t, float); | 153 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, half, float); |
| 110 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, uint8_t, float); | 154 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, int8_t, float); |
| 111 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, float, float); | 155 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, uint8_t, float); |
| 112 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, half, int32_t); | 156 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, float, float); |
| 113 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, int8_t, int32_t); | 157 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, half, int32_t); |
| 114 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, uint8_t, int32_t); | 158 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, int8_t, int32_t); |
| 115 | -TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0c2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, int32_t, int32_t); | 159 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, uint8_t, int32_t); |
| 160 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf, int32_t, int32_t); | ||
| 161 | + | ||
| 162 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_S4_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf_s4, void, float); | ||
| 163 | +TEST_CUBE_COMPUTE_FIXPIPE_L0C2L1_S4_INSTR(L0C2L1, asc_copy_l0c2l1, copy_matrix_cc_to_cbuf_s4, void, int32_t); | ||
| @@ -0,0 +1,94 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2025 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | + | ||
| 17 | + \ | ||
| 18 | +class TestCubeDmamove##class_name##data_type##val_type : public testing::Test { \ | ||
| 19 | +protected: \ | ||
| 20 | + void SetUp() { \ | ||
| 21 | + g_coreType = C_API_AIC_TYPE; \ | ||
| 22 | + } \ | ||
| 23 | + void TearDown() { \ | ||
| 24 | + g_coreType = C_API_AIV_TYPE; \ | ||
| 25 | + } \ | ||
| 26 | +}; \ | ||
| 27 | + \ | ||
| 28 | +namespace { \ | ||
| 29 | + \ | ||
| 30 | +void cce_name##_##data_type##_int64_t_##val_type##_Stub(__cbuf__ data_type *dst, \ | ||
| 31 | + int64_t repeat, val_type value) \ | ||
| 32 | +{ \ | ||
| 33 | + EXPECT_EQ(dst, reinterpret_cast<__cbuf__ data_type *>(11)); \ | ||
| 34 | + EXPECT_EQ(repeat, static_cast<int64_t>(0)); \ | ||
| 35 | + EXPECT_EQ(value, static_cast<val_type>(1)); \ | ||
| 36 | +} \ | ||
| 37 | + \ | ||
| 38 | +void cce_name##_##data_type##_##val_type##_InitFillL1ValueConfig(asc_fill_value_config &config) \ | ||
| 39 | +{ \ | ||
| 40 | + config.repeat = static_cast<uint64_t>(0); \ | ||
| 41 | + config.blk_num = static_cast<uint64_t>(0); \ | ||
| 42 | + config.dst_gap = static_cast<uint64_t>(0); \ | ||
| 43 | +} \ | ||
| 44 | + \ | ||
| 45 | +} \ | ||
| 46 | + \ | ||
| 47 | +TEST_F(TestCubeDmamove##class_name##data_type##val_type, c_api_name##_FillValueConfig_Succ) \ | ||
| 48 | +{ \ | ||
| 49 | + __cbuf__ data_type *dst = reinterpret_cast<__cbuf__ data_type *>(11); \ | ||
| 50 | + val_type value = 1; \ | ||
| 51 | + \ | ||
| 52 | + asc_fill_value_config config; \ | ||
| 53 | + cce_name##_##data_type##_##val_type##_InitFillL1ValueConfig(config); \ | ||
| 54 | + \ | ||
| 55 | + MOCKER_CPP(cce_name, void(__cbuf__ data_type *, int64_t, val_type)) \ | ||
| 56 | + .times(1) \ | ||
| 57 | + .will(invoke(cce_name##_##data_type##_int64_t_##val_type##_Stub)); \ | ||
| 58 | + \ | ||
| 59 | + c_api_name(dst, value, config); \ | ||
| 60 | + GlobalMockObject::verify(); \ | ||
| 61 | +} \ | ||
| 62 | + \ | ||
| 63 | +TEST_F(TestCubeDmamove##class_name##data_type##val_type, c_api_name##_sync_Succ) \ | ||
| 64 | +{ \ | ||
| 65 | + __cbuf__ data_type *dst = reinterpret_cast<__cbuf__ data_type *>(11); \ | ||
| 66 | + val_type value = 1; \ | ||
| 67 | + \ | ||
| 68 | + asc_fill_value_config config; \ | ||
| 69 | + cce_name##_##data_type##_##val_type##_InitFillL1ValueConfig(config); \ | ||
| 70 | + \ | ||
| 71 | + MOCKER_CPP(cce_name, void(__cbuf__ data_type *, int64_t, val_type)) \ | ||
| 72 | + .times(1) \ | ||
| 73 | + .will(invoke(cce_name##_##data_type##_int64_t_##val_type##_Stub)); \ | ||
| 74 | + \ | ||
| 75 | + c_api_name##_sync(dst, value, config); \ | ||
| 76 | + GlobalMockObject::verify(); \ | ||
| 77 | +} \ | ||
| 78 | + | ||
| 79 | +// ==========asc_fill_l1(half/float/int16_t/int32_t/uint16_t/uint32_t/bfloat16_t)========== | ||
| 80 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, half, half); | ||
| 81 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, half, uint32_t); | ||
| 82 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, float, half); | ||
| 83 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, float, uint32_t); | ||
| 84 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, int16_t, half); | ||
| 85 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, int16_t, uint32_t); | ||
| 86 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, int32_t, half); | ||
| 87 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, int32_t, uint32_t); | ||
| 88 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint16_t, half); | ||
| 89 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint16_t, uint32_t); | ||
| 90 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint32_t, half); | ||
| 91 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix, uint32_t, uint32_t); | ||
| 92 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_bf16, bfloat16_t, bfloat16_t); | ||
| 93 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_h, bfloat16_t, half); | ||
| 94 | +TEST_CUBE_DMAMOVE_FILL_L1_VALUE(FillL1Value, asc_fill_l1, create_cbuf_matrix_ui, bfloat16_t, uint32_t); | ||
| @@ -0,0 +1,37 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +class TestSysVarSetL0c2gmChannelPara : public testing::Test { | ||
| 17 | +protected: | ||
| 18 | + void SetUp() {} | ||
| 19 | + void TearDown() {} | ||
| 20 | +}; | ||
| 21 | + | ||
| 22 | +namespace { | ||
| 23 | +void set_channel_para_stub(uint64_t config) { | ||
| 24 | + EXPECT_EQ(config, 135); | ||
| 25 | +} | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +TEST_F(TestSysVarSetL0c2gmChannelPara, c_api_get_set_l0c2gm_channel_para_Succ) | ||
| 29 | +{ | ||
| 30 | + int64_t input = 135; | ||
| 31 | + MOCKER_CPP(set_channel_para, void(uint64_t)) | ||
| 32 | + .times(1) | ||
| 33 | + .will(invoke(set_channel_para_stub)); | ||
| 34 | + asc_set_l0c2gm_channel_para(input); | ||
| 35 | + asc_init(); | ||
| 36 | + GlobalMockObject::verify(); | ||
| 37 | +} | ||
| @@ -0,0 +1,37 @@ | |||
| 1 | +/** | ||
| 2 | +* Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +* This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +* CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +* Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +* See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +*/ | ||
| 10 | + | ||
| 11 | + | ||
| 12 | + | ||
| 13 | + | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +class TestSysVarSetL3dRptB : public testing::Test { | ||
| 17 | +protected: | ||
| 18 | + void SetUp() {} | ||
| 19 | + void TearDown() {} | ||
| 20 | +}; | ||
| 21 | + | ||
| 22 | +namespace { | ||
| 23 | +void set_l3d_rpt_b_stub(uint64_t config) { | ||
| 24 | + EXPECT_EQ(config, 135); | ||
| 25 | +} | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +TEST_F(TestSysVarSetL3dRptB, c_api_get_set_l3d_rpt_b_Succ) | ||
| 29 | +{ | ||
| 30 | + int64_t input = 135; | ||
| 31 | + MOCKER_CPP(set_l3d_rpt_b, void(uint64_t)) | ||
| 32 | + .times(1) | ||
| 33 | + .will(invoke(set_l3d_rpt_b_stub)); | ||
| 34 | + asc_set_l3d_rpt_b(input); | ||
| 35 | + asc_init(); | ||
| 36 | + GlobalMockObject::verify(); | ||
| 37 | +} | ||
| @@ -32,6 +32,313 @@ void vsts(vector_f8e8m0 src0, vector_f8e8m0 src1, __ubuf__ fp8_e8m0_t* base, int | |||
| 32 | void vsts(vector_f4e2m1x2 src0, vector_f4e2m1x2 src1, __ubuf__ fp4x2_e2m1_t* base, int32_t offset, Literal dist, vector_bool mask, Literal mode); | 32 | void vsts(vector_f4e2m1x2 src0, vector_f4e2m1x2 src1, __ubuf__ fp4x2_e2m1_t* base, int32_t offset, Literal dist, vector_bool mask, Literal mode); |
| 33 | void vsts(vector_f4e1m2x2 src0, vector_f4e1m2x2 src1, __ubuf__ fp4x2_e1m2_t* base, int32_t offset, Literal dist, vector_bool mask, Literal mode); | 33 | void vsts(vector_f4e1m2x2 src0, vector_f4e1m2x2 src1, __ubuf__ fp4x2_e1m2_t* base, int32_t offset, Literal dist, vector_bool mask, Literal mode); |
| 34 | 34 | ||
| 35 | +using float8_e4m3_t = fp8_e4m3fn_t; | ||
| 36 | +using float8_e5m2_t = fp8_e5m2_t; | ||
| 37 | +using float4_e1m2x2_t = fp4x2_e1m2_t; | ||
| 38 | +using float4_e2m1x2_t = fp4x2_e2m1_t; | ||
| 39 | + | ||
| 40 | +// ==========copy_matrix_cc_to_cbuf_s4=========== | ||
| 41 | +inline void copy_matrix_cc_to_cbuf_s4(__cbuf__ void *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 42 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 43 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 44 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 45 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 46 | + | ||
| 47 | +inline void copy_matrix_cc_to_cbuf_s4(__cbuf__ void *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 48 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 49 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 50 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 51 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 52 | + | ||
| 53 | +// ==========copy_matrix_cc_to_gm=========== | ||
| 54 | +inline void copy_matrix_cc_to_gm(__gm__ bfloat16_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 55 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 56 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 57 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 58 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 59 | + | ||
| 60 | +inline void copy_matrix_cc_to_gm(__gm__ half *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 61 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 62 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 63 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 64 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 65 | + | ||
| 66 | +inline void copy_matrix_cc_to_gm(__gm__ float8_e4m3_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 67 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 68 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 69 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 70 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 71 | + | ||
| 72 | +inline void copy_matrix_cc_to_gm(__gm__ float8_e5m2_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 73 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 74 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 75 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 76 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 77 | + | ||
| 78 | +inline void copy_matrix_cc_to_gm(__gm__ hifloat8_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 79 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 80 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 81 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 82 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 83 | + | ||
| 84 | +inline void copy_matrix_cc_to_gm(__gm__ int8_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 85 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 86 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 87 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 88 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 89 | + | ||
| 90 | +inline void copy_matrix_cc_to_gm(__gm__ uint8_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 91 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 92 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 93 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 94 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 95 | + | ||
| 96 | +inline void copy_matrix_cc_to_gm(__gm__ float *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 97 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 98 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 99 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 100 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 101 | + | ||
| 102 | +inline void copy_matrix_cc_to_gm(__gm__ bfloat16_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 103 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 104 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 105 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 106 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 107 | + | ||
| 108 | +inline void copy_matrix_cc_to_gm(__gm__ half *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 109 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 110 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 111 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 112 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 113 | + | ||
| 114 | +inline void copy_matrix_cc_to_gm(__gm__ float8_e4m3_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 115 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 116 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 117 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 118 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 119 | + | ||
| 120 | +inline void copy_matrix_cc_to_gm(__gm__ float8_e5m2_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 121 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 122 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 123 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 124 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 125 | + | ||
| 126 | +inline void copy_matrix_cc_to_gm(__gm__ hifloat8_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 127 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 128 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 129 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 130 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 131 | + | ||
| 132 | +inline void copy_matrix_cc_to_gm(__gm__ int8_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 133 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 134 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 135 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 136 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 137 | + | ||
| 138 | +inline void copy_matrix_cc_to_gm(__gm__ uint8_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 139 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 140 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 141 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 142 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 143 | + | ||
| 144 | +inline void copy_matrix_cc_to_gm(__gm__ int32_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 145 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 146 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 147 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 148 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 149 | + | ||
| 150 | +inline void copy_matrix_cc_to_gm_s4(__gm__ void *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 151 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 152 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 153 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 154 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 155 | + | ||
| 156 | +inline void copy_matrix_cc_to_gm_s4(__gm__ void *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 157 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t l2_cache_ctl, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 158 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 159 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 160 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 161 | + | ||
| 162 | +// ==========copy_matrix_cc_to_ub=========== | ||
| 163 | +inline void copy_matrix_cc_to_ub(__ubuf__ bfloat16_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 164 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 165 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 166 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 167 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 168 | + | ||
| 169 | +inline void copy_matrix_cc_to_ub(__ubuf__ half *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 170 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 171 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 172 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 173 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 174 | + | ||
| 175 | +inline void copy_matrix_cc_to_ub(__ubuf__ float8_e4m3_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 176 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 177 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 178 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 179 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 180 | + | ||
| 181 | +inline void copy_matrix_cc_to_ub(__ubuf__ float8_e5m2_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 182 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 183 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 184 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 185 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 186 | + | ||
| 187 | +inline void copy_matrix_cc_to_ub(__ubuf__ hifloat8_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 188 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 189 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 190 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 191 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 192 | + | ||
| 193 | +inline void copy_matrix_cc_to_ub(__ubuf__ int8_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 194 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 195 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 196 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 197 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 198 | + | ||
| 199 | +inline void copy_matrix_cc_to_ub(__ubuf__ uint8_t *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 200 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 201 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 202 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 203 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 204 | + | ||
| 205 | +inline void copy_matrix_cc_to_ub(__ubuf__ float *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 206 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 207 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 208 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 209 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 210 | + | ||
| 211 | +inline void copy_matrix_cc_to_ub(__ubuf__ bfloat16_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 212 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 213 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 214 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 215 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 216 | + | ||
| 217 | +inline void copy_matrix_cc_to_ub(__ubuf__ half *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 218 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 219 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 220 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 221 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 222 | + | ||
| 223 | +inline void copy_matrix_cc_to_ub(__ubuf__ float8_e4m3_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 224 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 225 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 226 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 227 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 228 | + | ||
| 229 | +inline void copy_matrix_cc_to_ub(__ubuf__ float8_e5m2_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 230 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 231 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 232 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 233 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 234 | + | ||
| 235 | +inline void copy_matrix_cc_to_ub(__ubuf__ hifloat8_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 236 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 237 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 238 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 239 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 240 | + | ||
| 241 | +inline void copy_matrix_cc_to_ub(__ubuf__ int8_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 242 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 243 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 244 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 245 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 246 | + | ||
| 247 | +inline void copy_matrix_cc_to_ub(__ubuf__ uint8_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 248 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 249 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 250 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 251 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 252 | + | ||
| 253 | +inline void copy_matrix_cc_to_ub(__ubuf__ int32_t *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 254 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 255 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 256 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 257 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 258 | + | ||
| 259 | +inline void copy_matrix_cc_to_ub_s4(__ubuf__ void *dst_addr, __cc__ float *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 260 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 261 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 262 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 263 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 264 | + | ||
| 265 | +inline void copy_matrix_cc_to_ub_s4(__ubuf__ void *dst_addr, __cc__ int32_t *src_addr, uint8_t sid, uint16_t n_size, uint16_t m_size, | ||
| 266 | + uint32_t loop_dst_stride, uint16_t loop_src_stride, uint8_t dual_dst_ctl, bool sub_blockid, uint8_t clip_relu_pre, uint8_t unit_flag_ctl, | ||
| 267 | + uint64_t quant_pre, uint8_t relu_pre, bool split_en, bool NZ2ND_en, uint64_t quant_post, uint8_t relu_post, bool clip_relu_post, | ||
| 268 | + bool loop_enhance_en, uint8_t eltwise_op, bool eltwise_antq_en, bool loop_enhance_merge_en, bool C0_pad_en, bool wino_post_en, | ||
| 269 | + bool broadcast_en, bool NZ2DN_en) {} | ||
| 270 | + | ||
| 271 | +// ==========load_gm_to_cbuf_2dv2=========== | ||
| 272 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ bfloat16_t *dst, __gm__ bfloat16_t *src, uint32_t m_start_position, | ||
| 273 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 274 | + uint8_t l2_cache_ctl) {} | ||
| 275 | + | ||
| 276 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ float *dst, __gm__ float *src, uint32_t m_start_position, | ||
| 277 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 278 | + uint8_t l2_cache_ctl) {} | ||
| 279 | + | ||
| 280 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ float8_e4m3_t *dst, __gm__ float8_e4m3_t *src, uint32_t m_start_position, | ||
| 281 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 282 | + uint8_t l2_cache_ctl) {} | ||
| 283 | + | ||
| 284 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ float8_e5m2_t *dst, __gm__ float8_e5m2_t *src, uint32_t m_start_position, | ||
| 285 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 286 | + uint8_t l2_cache_ctl) {} | ||
| 287 | + | ||
| 288 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ half *dst, __gm__ half *src, uint32_t m_start_position, | ||
| 289 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 290 | + uint8_t l2_cache_ctl) {} | ||
| 291 | + | ||
| 292 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ hifloat8_t *dst, __gm__ hifloat8_t *src, uint32_t m_start_position, | ||
| 293 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 294 | + uint8_t l2_cache_ctl) {} | ||
| 295 | + | ||
| 296 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ int16_t *dst, __gm__ int16_t *src, uint32_t m_start_position, | ||
| 297 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 298 | + uint8_t l2_cache_ctl) {} | ||
| 299 | + | ||
| 300 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ int32_t *dst, __gm__ int32_t *src, uint32_t m_start_position, | ||
| 301 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 302 | + uint8_t l2_cache_ctl) {} | ||
| 303 | + | ||
| 304 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ int8_t *dst, __gm__ int8_t *src, uint32_t m_start_position, | ||
| 305 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 306 | + uint8_t l2_cache_ctl) {} | ||
| 307 | + | ||
| 308 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ uint16_t *dst, __gm__ uint16_t *src, uint32_t m_start_position, | ||
| 309 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 310 | + uint8_t l2_cache_ctl) {} | ||
| 311 | + | ||
| 312 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ uint32_t *dst, __gm__ uint32_t *src, uint32_t m_start_position, | ||
| 313 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 314 | + uint8_t l2_cache_ctl) {} | ||
| 315 | + | ||
| 316 | +inline void load_gm_to_cbuf_2dv2(__cbuf__ uint8_t *dst, __gm__ uint8_t *src, uint32_t m_start_position, | ||
| 317 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 318 | + uint8_t l2_cache_ctl) {} | ||
| 319 | + | ||
| 320 | +// ==========load_gm_to_cbuf_2dv2_s4=========== | ||
| 321 | +inline void load_gm_to_cbuf_2dv2_s4(__cbuf__ float4_e1m2x2_t *dst, __gm__ float4_e1m2x2_t *src, uint32_t m_start_position, | ||
| 322 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 323 | + uint8_t l2_cache_ctl) {} | ||
| 324 | + | ||
| 325 | +inline void load_gm_to_cbuf_2dv2_s4(__cbuf__ float4_e2m1x2_t *dst, __gm__ float4_e2m1x2_t *src, uint32_t m_start_position, | ||
| 326 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 327 | + uint8_t l2_cache_ctl) {} | ||
| 328 | + | ||
| 329 | +inline void load_gm_to_cbuf_2dv2_s4(__cbuf__ void *dst, __gm__ void *src, uint32_t m_start_position, | ||
| 330 | + uint32_t k_start_position, uint16_t dst_stride, uint16_t m_step, uint16_t k_step, uint8_t sid, uint8_t decomp_mode, | ||
| 331 | + uint8_t l2_cache_ctl) {} | ||
| 332 | + | ||
| 333 | +// ==========copy_cbuf_to_ubuf=========== | ||
| 334 | +inline void copy_cbuf_to_ubuf(__ubuf__ void *dst_addr, __cbuf__ void *src_addr, bool sub_blockid, | ||
| 335 | + uint16_t burst_num, uint16_t burst_len, uint16_t src_gap, uint16_t dst_gap) {} | ||
| 336 | + | ||
| 337 | + | ||
| 338 | +inline void create_cbuf_matrix_h(__cbuf__ bfloat16_t *dst, int64_t repeat, half value) {} | ||
| 339 | + | ||
| 340 | +inline void create_cbuf_matrix_ui(__cbuf__ bfloat16_t *dst, int64_t repeat, uint32_t value) {} | ||
| 341 | + | ||
| 35 | inline void vmrgsort4(__ubuf__ half* dst, __ubuf__ half* src, uint8_t repeat, uint16_t regionProposalLi0, | 342 | inline void vmrgsort4(__ubuf__ half* dst, __ubuf__ half* src, uint8_t repeat, uint16_t regionProposalLi0, |
| 36 | uint16_t regionProposalLi1, uint16_t regionProposalLi2, uint16_t regionProposalLi3, bool isAllStored, | 343 | uint16_t regionProposalLi1, uint16_t regionProposalLi2, uint16_t regionProposalLi3, bool isAllStored, |
| 37 | uint8_t maskSignal) {} | 344 | uint8_t maskSignal) {} |


impl/c_api/instr_impl/npu_arch_3510/atomic_impl/asc_set_atomic_add_int_impl.h此评论由代码审查工具自动生成