经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
RVV1.0指令中关于_m系列函数的使用方法,即掩码mask的转换使用
来源:cnblogs  作者:惠安雪乃  时间:2025/3/7 9:51:18  对本文有异议

在RVV1.0指令函数的使用中,遇到了mask加载不匹配问题

  1. uint8_t mask_data[] = {15, 0, 0, 0, 0, 0, 0, 0};
  2. vbool8_t mask = vlm_v_b8(mask_data, vl);
  3. printf("mask:\n");
  4. for(int i=0; i<vl; i++)
  5. {
  6. printf("%d ", mask_data[i]);
  7. }
  8. printf("\n");
  9. // exam mask
  10. uint8_t mask_e[8];
  11. vsm_v_b8(mask_e, mask, vl);
  12. printf("mask_e:\n");
  13. for(int i=0; i<vl; i++)
  14. {
  15. printf("%d ", mask_e[i]);
  16. }
  17. printf("\n");

即在这段代码中,由mask_data转换为mask过程中,出现应用时不匹配问题,这里mask_data的元素15,0,0,0,0,0,0,0;实际上不会这么写入mask中。

那么,它是怎么应用的呢;

  1. 15 = 0000 1111
  2. 15转化为二进制,在实际计算中,mask被赋值为1111 0000.

那么得出结论,转换规则为:

  1. 将mask_data数组下标为0处表示掩码,其余位置置0
  2. 首元素的设置为:哪一位参与运算位置为0,不参与计算则置为1,这样得到的二进制转换为十进制数。
  3. maskedoff遵循原顺序即可。

原文链接:https://www.cnblogs.com/2-7-4-9-7-4-2-8-7-6mc/p/18757023

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号