# Intrinsic-vscode-extension **Repository Path**: rvsmart-porting/intrinsic-vscode-extension ## Basic Information - **Project Name**: Intrinsic-vscode-extension - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-07 - **Last Updated**: 2024-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Intrinsic-vscode-extension #### 介绍 本系统通过对 ARM Neon 内建函数和 RISC-V 内建函数的深入研究分析,建立了内建函数映射关系。对于使用了 ARM Neon 内建函数的 C 或 C++ 代码,工具提供了 Neon 元素突出显示、悬浮提示的能力,帮助开发者快速定位到迁移过程中需要关注的核心代码段;而工具自动替换代码的能力,可以有效帮助开发者将其迁移到 RISC-V 架构,专注于功能逻辑实现,提高开发效率。 #### 软件架构 本软件主要分为两个模块完成移植复杂度评估工作,数据支持模块以及功能实现模块。工程师迁移时首先通过 Visual Studio Code 打开需要修改的项目工程并打开软件包构建配置文件,工具会自动识别文件名后缀为 `.c` 或 `.cpp` 的文件中的 Neon 相关元素,并通过代码高亮和悬浮提示功能向开发者展示相关的内建函数信息和映射关系。此外,工具的代码自动替换功能能够迅速将 Neon 内建函数转换为对应的 RISC-V 架构 RVV 内建函数实现,不仅保持了与传统头文件迁移相似的性能,还大大简化了迁移过程。 ![系统架构图](./assets/system_structure.png) #### 安装教程 1. 打开 VS Code,点击左侧菜单栏的 Extensions 图标,或者使用快捷键 Ctrl+Shift+X 打开插件视图。 2. 点击插件视图右上角的 … 按钮,选择 “Install from VSIX” 选项。 3. 在弹出的文件选择窗口中,浏览到插件的安装文件(以 `.vsix` 结尾的文件),点击 Open 按钮进行安装。 [插件下载链接](https://gitee.com/rvsmart-porting/intrinsic-vscode-extension/releases/download/v0.0.1/intrinsics-plugin-demo-0.0.1.vsix) #### 使用说明 - 映射关系建立 在迁移 Neon 到 RVV 的过程中,面对内建函数的数据类型、功能、参数及返回值的不一致性是一个重要挑战。Neon 的内建函数通常固定于特定的数据类型和长度,而 RVV 的函数则设计得更为灵活,支持广泛的数据类型和可变长度,这导致两者在功能实现上存在本质的差异。为解决这些差异,在工具的 mappings.json 文件中,通过规定 RISC-V 向量寄存器长度 VLEN 为128位,并在内建函数映射时限制操作的元素数量,与 Neon 向量的对应类型保持一致,建立的 Neon 到 RVV 的数据类型映射以及功能函数共计 1608 条映射关系。 - 代码高亮 该工具基于 Visual Studio Code 插件开发,提供了对软件包构建配置文件基础的语言支持。代码高亮功能帮助开发者迅速定位到转换过程中需关注的核心代码段。工具的代码高亮功能通过正则匹配和VS Code的代码诊断功能实现,为 ARM Neon 元素添加下波浪线。 处理方式:根据当前打开的文件代码,使用正则匹配,将匹配的代码片段高亮。 - 悬浮提示 悬浮提示功能则在用户将光标悬停在代码中任何一个内建函数或变量上时触发。此时,一个信息框会展现出该元素的详细信息通过保证了代码修改体验的流畅性和便捷性。悬浮提示功能和代码替换功能通过读取 ARM Neon 和 RISC-V 的映射文件中的相关知识和等效代码实现。 处理方式:将鼠标移动至 Neon 元素上时,提示元素相关知识。 - 代码替换 代码替换功能将识别出的 Neon 内建函数和数据类型替换为相应的 RISC-V 内建函数。确保替换精确且对原有代码结构的干扰最小,转换后的代码能在 RISC-V 架构上正确执行且具有头文件形式的性能优化。让工程师在编写代码时能够更加专注于代码实现,提高迁移效率。 处理方式:点击代码转换选项,将所有 Neon 元素替换为 RISC-V 的等效实现。