目录
一、问题背景
二、index计算
三、数据重排
四、总结
一、问题背景
vcompress是RVV最为复杂的一条指令,用于将数据中某些数据“剔除”,实现数据压缩。
下图是vcompress指令的功能示意图:
![](https://img-blog.csdnimg.cn/20210617191110571.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM2MTM2NTA=,size_16,color_FFFFFF,t_70)
vcompress指令需要找出mask数据中1的位置(index),再根据位置实现数据重排列。
二、index计算
找mask数据中1的位置可以循环利用find_first_1电路,find_first_1电路结构如下:
![](https://img-blog.csdnimg.cn/20210617191410875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTM2MTM2NTA=,size_16,color_FFFFFF,t_70)
找出第一个1后,消去该1,随后再次利用find_first_1电路,电路上