Pull Request已成功合入, 合并人@CANN-robot
(感谢 lihuaichao 的贡献)变更摘要
本 PR 为 3510 架构的 C API Load 类指令新增带返回值(return-value)的重载接口,覆盖 asc_load、asc_loadalign、asc_loadalign_brc_datablock、asc_loadalign_brc_elem、asc_loadalign_brc_elem2datablock、asc_loadalign_downsample、asc_loadalign_unpack、asc_loadalign_unpack4、asc_loadalign_upsample 和 asc_loadalign_datablock_stride。新接口在 impl/c_api/instr_impl/npu_arch_3510/vector_datamove_impl.h 中定义,通过局部变量 dst 直接调用现有内部 *_impl 实现后返回矢量寄存器,不新增 int64_t/uint64_t 类型接口,并在 include/c_api/reg_compute/reg_load.h 补充对应声明及 141 个返回值接口单元测试和 Host Header 检查。
主要改动
- 实现返回值重载接口:在
vector_datamove_impl.h新增约 1014 行__simd_callee__ inline重载,每个函数以局部dst调用对应*_impl(如asc_load_impl、asc_loadalign_impl、asc_loadalign_downsample_impl等)后返回对应类型的vector_*类型;其中asc_loadalign_datablock_stride额外透传block_stride、repeat_stride、mask参数,asc_loadalign的bool重载经reinterpret_cast到__ubuf__ uint32_t*后调用实现。 - 补充头文件声明:在
reg_load.h新增约 178 行对应返回值重载的前置声明,与既有 void 引用式重载并列,构成对外接口契约。 - 扩展单元测试:新增
tests/api/c_api/npu_arch_3510/vector_datamove/test_asc_load_return.cpp(约 269 行),通过TEST_VECTOR_DATAMOVE_LOADALIGN_RETURN宏覆盖asc_loadalign、asc_loadalign_brc_elem、asc_loadalign_brc_datablock、asc_loadalign_brc_elem2datablock、asc_loadalign_downsample、asc_loadalign_unpack、asc_loadalign_unpack4、asc_loadalign_upsample的返回值接口,用例以static_assert校验返回类型并 mock 底层vlds/plds。 - 补充既有测试文件:
test_asc_load.cpp新增TEST_VECTOR_DATAMOVE_LOAD_RETURN宏及 16 条asc_load返回值用例,test_asc_load_align_v2.cpp新增TEST_VECTOR_COMPUTE_LOADALIGN_RETURN宏及 16 条asc_loadalign_datablock_stride返回值用例,test_asc_loadalign_plds.cpp新增LoadAlignPldsBool_ReturnSucc用例覆盖asc_loadalign的bool重载。 - Host Header 检查:
host_header_reg_compute_checker.cpp增加using ::asc_loadalign_datablock_stride;,确保新接口在 Host Header 中被正确引用。


Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| docs | ✅ munanhw, wuyang_hw, Lycheeeee (3/2) | ✅ munanhw (1/1) |
| impl/c_api | ✅ Lycheeeee, wuyang_hw (2/2) | ✅ Lycheeeee (1/1) |
| include/c_api | ✅ wuyang_hw, Lycheeeee, wuzhaolin (3/2) | ✅ wuzhaolin (1/1) |
| include/c_api/reg_compute | ✅ horming, wuyang_hw, Lycheeeee (3/2) | ✅ horming (1/1) |
| repo-cann/asc-devkit | ✅ wuyang_hw, Lycheeeee (2/2) | ✅ wuyang_hw, Lycheeeee (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
lihuaichao, thanks for your pull request. All authors of the commits have signed the CLA. 👍


描述
为 3510 架构的 C API Load 类指令新增带返回值重载,覆盖 asc_load、asc_loadalign、asc_loadalign_brc_datablock、asc_loadalign_brc_elem、asc_loadalign_brc_elem2datablock、asc_loadalign_downsample、asc_loadalign_unpack、asc_loadalign_unpack4、asc_loadalign_upsample 和 asc_loadalign_datablock_stride。
新增接口使用局部变量 dst,并直接调用现有内部 *_impl 实现后返回矢量寄存器;不新增 int64_t 和 uint64_t 类型接口。新增及补充 141 个返回值接口单元测试和 Host Header 检查。
关联的Issue
无。
测试
NA
文档更新
本次未修改文档。
类型标签