比特位操作指令¶
比特位操作类指令用于在每个执行通道(Lane)内,对8/16/32/64位标量元素进行高效的局部位域处理与统计。该类指令以位为基本单位,覆盖端序翻转、位计数、位段提取与扩展、以及位段清零/置位等常见操作,适用于加速编解码、密码学、图像/信号处理与位级协议解析等场景。
指令列表¶
| 微指令 | 汇编格式 | 支持寄存器位宽 | 描述 |
|---|---|---|---|
| V.BXU | v.bxu SrcL.{T}, M, N, ->Dst.{W} |
从源操作数第M位开始连续截取N位并无符号扩展 |
|
| V.BXS | v.bxs SrcL.{T}, M, N, ->Dst.{W} |
从源操作数第M位开始连续截取N位并有符号扩展 |
|
| V.BIC | v.bic SrcL.{T}, M, N, ->Dst.{W} |
将源操作数第M位开始连续N位置位为0 |
|
| V.BIS | v.bis SrcL.{T}, M, N, ->Dst.{W} |
将源操作数第M位开始连续N位置位为1 |
|
| V.CTZ | v.ctz SrcL.{T}, M, N, ->Dst.{W} |
计数源操作数第M位开始连续N位第一个1后的0的个数 |
|
| V.CLZ | v.clz SrcL.{T}, M, N, ->Dst.{W} |
计数源操作数第M位开始连续N位第一个1前的0的个数 |
|
| V.BCNT | v.bcnt SrcL.{T}, M, N, ->Dst.{W} |
计数源操作数第M位开始连续N位比特位为1的位数 |
|
| V.REV | v.rev SrcL.{T}, M, N, ->Dst.{W} |
在源操作数的M位的范围内以N位为单位进行翻转 |
指令编码¶
使用与边界注意¶
- 调用方应确保 M 与 N 的取值不越界;越界行为未定义。
- 对于计数类指令(CLZ/CTZ/BCNT),统计仅在指定的 N 位窗口内进行,与窗口外位无关。
- 对于修改位段的指令(BIC/BIS),仅影响指定位段,其余位按原值保留。
- 不涉及跨通道数据依赖与同步。