6.1 组 1:整数 / uniform 标量 / EXEC / 分支(unit: valu-int + salu + branch,241 条)
VALU 整数与位操作(R / RU / I8)(84 条)
ADD
语法(Syntax)
add rd:v rs1:v rs2:v
add.vu rd:v rs1:v rs2:u
add.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
add | R op opcode=0x2 f4=0x0 | fixed:4 | d = s1 + s2 | - |
add.vu | RU op opcode=0x8 f5=0x0 | fixed:4 | d = s1 + u2 | - |
add.vi | I8 op opcode=0xa f3=0x0 | fixed:4 | d = s1 + sext(imm) | - |
SUB
语法(Syntax)
sub rd:v rs1:v rs2:v
sub.vu rd:v rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
sub | R op opcode=0x2 f4=0x1 | fixed:4 | d = s1 - s2 | - |
sub.vu | RU op opcode=0x8 f5=0x1 | fixed:4 | d = s1 - u2 | - |
SLL
语法(Syntax)
sll rd:v rs1:v rs2:v
sll.vu rd:v rs1:v rs2:u
sll.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
sll | R op opcode=0x2 f4=0x2 | fixed:4 | d = s1 << s2[4:0] | - |
sll.vu | RU op opcode=0x8 f5=0x2 | fixed:4 | d = s1 << u2[4:0] | - |
sll.vi | I8 op opcode=0xa f3=0x4 | fixed:4 | d = s1 << sext(imm)[4:0] | - |
SLT
语法(Syntax)
slt rd:v rs1:v rs2:v
slt.vu rd:v rs1:v rs2:u
slt.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
slt | R op opcode=0x2 f4=0x3 | fixed:4 | d = (s1 <s s2) ? 1 : 0 | - |
slt.vu | RU op opcode=0x8 f5=0x3 | fixed:4 | d = (s1 <s u2) ? 1 : 0 | - |
slt.vi | I8 op opcode=0xc f3=0x0 | fixed:4 | d = (s1 <s sext(imm)) ? 1 : 0 | - |
SLTU
语法(Syntax)
sltu rd:v rs1:v rs2:v
sltu.vu rd:v rs1:v rs2:u
sltu.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
sltu | R op opcode=0x2 f4=0x4 | fixed:4 | d = (s1 <u s2) ? 1 : 0 | - |
sltu.vu | RU op opcode=0x8 f5=0x4 | fixed:4 | d = (s1 <u u2) ? 1 : 0 | - |
sltu.vi | I8 op opcode=0xc f3=0x1 | fixed:4 | d = (s1 <u sext(imm)) ? 1 : 0 | - |
XOR
语法(Syntax)
xor rd:v rs1:v rs2:v
xor.vu rd:v rs1:v rs2:u
xor.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
xor | R op opcode=0x2 f4=0x5 | fixed:4 | d = s1 ^ s2 | - |
xor.vu | RU op opcode=0x8 f5=0x5 | fixed:4 | d = s1 ^ u2 | - |
xor.vi | I8 op opcode=0xa f3=0x3 | fixed:4 | d = s1 ^ sext(imm) | - |
SRL
语法(Syntax)
srl rd:v rs1:v rs2:v
srl.vu rd:v rs1:v rs2:u
srl.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
srl | R op opcode=0x2 f4=0x6 | fixed:4 | d = s1 >>u s2[4:0] | - |
srl.vu | RU op opcode=0x8 f5=0x6 | fixed:4 | d = s1 >>u u2[4:0] | - |
srl.vi | I8 op opcode=0xa f3=0x5 | fixed:4 | d = s1 >>u sext(imm)[4:0] | - |
SRA
语法(Syntax)
sra rd:v rs1:v rs2:v
sra.vu rd:v rs1:v rs2:u
sra.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
sra | R op opcode=0x2 f4=0x7 | fixed:4 | d = s1 >>s s2[4:0] | - |
sra.vu | RU op opcode=0x8 f5=0x7 | fixed:4 | d = s1 >>s u2[4:0] | - |
sra.vi | I8 op opcode=0xa f3=0x6 | fixed:4 | d = s1 >>s sext(imm)[4:0] | - |
OR
语法(Syntax)
or rd:v rs1:v rs2:v
or.vu rd:v rs1:v rs2:u
or.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
or | R op opcode=0x2 f4=0x8 | fixed:4 | d = s1 | s2 | - |
or.vu | RU op opcode=0x8 f5=0x8 | fixed:4 | d = s1 | u2 | - |
or.vi | I8 op opcode=0xa f3=0x2 | fixed:4 | d = s1 | sext(imm) | - |
AND
语法(Syntax)
and rd:v rs1:v rs2:v
and.vu rd:v rs1:v rs2:u
and.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
and | R op opcode=0x2 f4=0x9 | fixed:4 | d = s1 & s2 | - |
and.vu | RU op opcode=0x8 f5=0x9 | fixed:4 | d = s1 & u2 | - |
and.vi | I8 op opcode=0xa f3=0x1 | fixed:4 | d = s1 & sext(imm) | - |
MIN
语法(Syntax)
min rd:v rs1:v rs2:v
min.vu rd:v rs1:v rs2:u
min.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
min | R op opcode=0x2 f4=0xa | fixed:4 | d = min_s(s1, s2) | - |
min.vu | RU op opcode=0x8 f5=0xa | fixed:4 | d = min_s(s1, u2) | - |
min.vi | I8 op opcode=0xc f3=0x2 | fixed:4 | d = min_s(s1, sext(imm)) | - |
MAX
语法(Syntax)
max rd:v rs1:v rs2:v
max.vu rd:v rs1:v rs2:u
max.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
max | R op opcode=0x2 f4=0xb | fixed:4 | d = max_s(s1, s2) | - |
max.vu | RU op opcode=0x8 f5=0xb | fixed:4 | d = max_s(s1, u2) | - |
max.vi | I8 op opcode=0xc f3=0x3 | fixed:4 | d = max_s(s1, sext(imm)) | - |
MINU
语法(Syntax)
minu rd:v rs1:v rs2:v
minu.vu rd:v rs1:v rs2:u
minu.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
minu | R op opcode=0x2 f4=0xc | fixed:4 | d = min_u(s1, s2) | - |
minu.vu | RU op opcode=0x8 f5=0xc | fixed:4 | d = min_u(s1, u2) | - |
minu.vi | I8 op opcode=0xc f3=0x4 | fixed:4 | d = min_u(s1, sext(imm)) | - |
MAXU
语法(Syntax)
maxu rd:v rs1:v rs2:v
maxu.vu rd:v rs1:v rs2:u
maxu.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
maxu | R op opcode=0x2 f4=0xd | fixed:4 | d = max_u(s1, s2) | - |
maxu.vu | RU op opcode=0x8 f5=0xd | fixed:4 | d = max_u(s1, u2) | - |
maxu.vi | I8 op opcode=0xc f3=0x5 | fixed:4 | d = max_u(s1, sext(imm)) | - |
ANDN
语法(Syntax)
andn rd:v rs1:v rs2:v
andn.vu rd:v rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
andn | R op opcode=0x2 f4=0xe | fixed:4 | d = s1 & ~s2 | - |
andn.vu | RU op opcode=0x8 f5=0xe | fixed:4 | d = s1 & ~u2 | - |
ORN
语法(Syntax)
orn rd:v rs1:v rs2:v
orn.vu rd:v rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
orn | R op opcode=0x2 f4=0xf | fixed:4 | d = s1 | ~s2 | - |
orn.vu | RU op opcode=0x8 f5=0xf | fixed:4 | d = s1 | ~u2 | - |
MUL
语法(Syntax)
mul rd:v rs1:v rs2:v
mul.vu rd:v rs1:v rs2:u
mul.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mul | R op opcode=0x4 f4=0x0 | fixed:4 | d = (s1 * s2)[31:0] | - |
mul.vu | RU op opcode=0x8 f5=0x10 | fixed:4 | d = (s1 * u2)[31:0] | - |
mul.vi | I8 op opcode=0xa f3=0x7 | fixed:4 | d = (s1 * sext(imm))[31:0] | - |
MULH
语法(Syntax)
mulh rd:v rs1:v rs2:v
mulh.vu rd:v rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mulh | R op opcode=0x4 f4=0x1 | fixed:4 | d = (sext(s1) * sext(s2))[63:32] | - |
mulh.vu | RU op opcode=0x8 f5=0x12 | fixed:4 | d = (sext(s1) * sext(u2))[63:32] | - |
MULHSU
语法(Syntax)
mulhsu rd:v rs1:v rs2:v
描述:d = (sext(s1) * zext(s2))[63:32]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mulhsu | R op opcode=0x4 f4=0x2 | fixed:4 | - |
MULHU
语法(Syntax)
mulhu rd:v rs1:v rs2:v
mulhu.vu rd:v rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mulhu | R op opcode=0x4 f4=0x3 | fixed:4 | d = (zext(s1) * zext(s2))[63:32] | - |
mulhu.vu | RU op opcode=0x8 f5=0x11 | fixed:4 | d = (zext(s1) * zext(u2))[63:32] | - |
MAC
语法(Syntax)
mac rd:v* rs1:v rs2:v
mac.vu rd:v* rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mac | R op opcode=0x4 f4=0x4 | fixed:4 | d = d + s1 * s2(低 32 位) | - |
mac.vu | RU op opcode=0x8 f5=0x13 | fixed:4 | d = d + s1 * u2(低 32 位) | - |
XNOR
语法(Syntax)
xnor rd:v rs1:v rs2:v
描述:d = ~(s1 ^ s2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
xnor | R op opcode=0x4 f4=0x5 | fixed:4 | - |
ROL
语法(Syntax)
rol rd:v rs1:v rs2:v
描述:d = rotl32(s1, s2[4:0])
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
rol | R op opcode=0x4 f4=0x6 | fixed:4 | - |
ROR
语法(Syntax)
ror rd:v rs1:v rs2:v
描述:d = rotr32(s1, s2[4:0])
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
ror | R op opcode=0x4 f4=0x7 | fixed:4 | - |
CZERO
语法(Syntax)
czero.eqz rd:v rs1:v rs2:v
czero.nez rd:v rs1:v rs2:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
czero.eqz | R op opcode=0x4 f4=0x8 | fixed:4 | d = (s2 == 0) ? 0 : s1 | - |
czero.nez | R op opcode=0x4 f4=0x9 | fixed:4 | d = (s2 != 0) ? 0 : s1 | - |
ADDSAT
语法(Syntax)
addsat.i32 rd:v rs1:v rs2:v
addsat.u32 rd:v rs1:v rs2:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
addsat.i32 | R op opcode=0x4 f4=0xa | fixed:4 | d = sat_s32(s1 + s2)(有符号饱和) | - |
addsat.u32 | R op opcode=0x4 f4=0xb | fixed:4 | d = sat_u32(s1 + s2)(无符号饱和) | - |
SUBSAT
语法(Syntax)
subsat.i32 rd:v rs1:v rs2:v
subsat.u32 rd:v rs1:v rs2:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
subsat.i32 | R op opcode=0x4 f4=0xc | fixed:4 | d = sat_s32(s1 - s2)(有符号饱和) | - |
subsat.u32 | R op opcode=0x4 f4=0xd | fixed:4 | d = sat_u32(s1 - s2)(无符号饱和) | - |
BFM
语法(Syntax)
bfm rd:v rs1:v rs2:v
描述:d = 位域掩码(宽度 s1[5:0],偏移 s2[4:0])
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bfm | R op opcode=0x4 f4=0xe | fixed:4 | - |
MULWU
语法(Syntax)
mulwu rd:vp^2 rs1:v rs2:v
描述:d64 = zext(s1) * zext(s2)(64 位乘积)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mulwu | R op opcode=0x4 f4=0xf | fixed:4 | p64 |
ADD64
语法(Syntax)
add64 rd:vp^2 rs1:vp^2 rs2:vp^2
描述:d64 = s1_64 + s2_64
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
add64 | R op opcode=0x6 f4=0x0 | fixed:4 | p64 |
SUB64
语法(Syntax)
sub64 rd:vp^2 rs1:vp^2 rs2:vp^2
描述:d64 = s1_64 - s2_64
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
sub64 | R op opcode=0x6 f4=0x1 | fixed:4 | p64 |
ADDSX64
语法(Syntax)
addsx64 rd:vp^2 rs1:vp^2 rs2:v
描述:d64 = s1_64 + sext64(s2)(地址 + 有符号 32 位偏移)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
addsx64 | R op opcode=0x6 f4=0x2 | fixed:4 | p64 |
ADDZX64
语法(Syntax)
addzx64 rd:vp^2 rs1:vp^2 rs2:v
addzx64.vu rd:vp^2 rs1:vp^2 rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
addzx64 | R op opcode=0x6 f4=0x3 | fixed:4 | d64 = s1_64 + zext64(s2)(地址 + 无符号 32 位偏移) | p64 |
addzx64.vu | RU op opcode=0x8 f5=0x1c | fixed:4 | d64 = s1_64 + zext64(u2) | p64 |
SLL64
语法(Syntax)
sll64 rd:vp^2 rs1:vp^2 rs2:v
描述:d64 = s1_64 << s2[5:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
sll64 | R op opcode=0x6 f4=0x4 | fixed:4 | p64 |
SRL64
语法(Syntax)
srl64 rd:vp^2 rs1:vp^2 rs2:v
描述:d64 = s1_64 >>u s2[5:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
srl64 | R op opcode=0x6 f4=0x5 | fixed:4 | p64 |
SRA64
语法(Syntax)
sra64 rd:vp^2 rs1:vp^2 rs2:v
描述:d64 = s1_64 >>s s2[5:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
sra64 | R op opcode=0x6 f4=0x6 | fixed:4 | p64 |
MULW
语法(Syntax)
mulw rd:vp^2 rs1:v rs2:v
描述:d64 = sext64(s1) * sext64(s2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mulw | R op opcode=0x6 f4=0x7 | fixed:4 | p64 |
SUBR
语法(Syntax)
subr.vu rd:v rs1:v rs2:u
subr.vi rd:v rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
subr.vu | RU op opcode=0x8 f5=0x14 | fixed:4 | d = u2 - s1 | - |
subr.vi | I8 op opcode=0xc f3=0x6 | fixed:4 | d = sext(imm) - s1 | - |
SLLR
语法(Syntax)
sllr.vu rd:v rs1:v rs2:u
描述:d = u2 << s1[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
sllr.vu | RU op opcode=0x8 f5=0x15 | fixed:4 | - |
SRLR
语法(Syntax)
srlr.vu rd:v rs1:v rs2:u
描述:d = u2 >>u s1[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
srlr.vu | RU op opcode=0x8 f5=0x16 | fixed:4 | - |
SRAR
语法(Syntax)
srar.vu rd:v rs1:v rs2:u
描述:d = u2 >>s s1[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
srar.vu | RU op opcode=0x8 f5=0x17 | fixed:4 | - |
MBCNT
语法(Syntax)
mbcnt rd:v rs1:v rs2:u
描述:d = s1 + popcount(u2 & ((1 << lane) - 1))(压缩 / 子组排位计数)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mbcnt | RU op opcode=0x8 f5=0x18 | fixed:4 | - |
CNDMASK
语法(Syntax)
cndmask rd:v* rs1:v rs2:u
描述:d = u2[lane] ? s1 : d(按 uniform lane 掩码选择)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
cndmask | RU op opcode=0x8 f5=0x19 | fixed:4 | - |
MOVREL
语法(Syntax)
movrel.s rd:v rs1:v rs2:u
movrel.d rd:v rs1:v rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
movrel.s | RU op opcode=0x8 f5=0x1a | fixed:4 | d = V[rs1 号 + u2](相对寻址读源;越出分配范围读 0) | ir |
movrel.d | RU op opcode=0x8 f5=0x1b | fixed:4 | V[rd 号 + u2] = s1(越出分配范围的写被丢弃) | ir |
VALU 一元 / uniform 广播 / 立即数(R1 / R1U / LI)(18 条)
MOV
语法(Syntax)
mov rd:v rs1:v
mov.vu rd:v rs1:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mov | R1 op opcode=0xe f11=0x0 | fixed:4 | d = s1 | - |
mov.vu | R1U op opcode=0x10 f12=0x0 | fixed:4 | d = u1(uniform 广播到活跃 lane) | - |
NOT
语法(Syntax)
not rd:v rs1:v
描述:d = ~s1
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
not | R1 op opcode=0xe f11=0x1 | fixed:4 | - |
CLZ
语法(Syntax)
clz rd:v rs1:v
描述:d = clz(s1)(s1 = 0 时为 32)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
clz | R1 op opcode=0xe f11=0x2 | fixed:4 | - |
CTZ
语法(Syntax)
ctz rd:v rs1:v
描述:d = ctz(s1)(s1 = 0 时为 32)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
ctz | R1 op opcode=0xe f11=0x3 | fixed:4 | - |
CPOP
语法(Syntax)
cpop rd:v rs1:v
描述:d = popcount(s1)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
cpop | R1 op opcode=0xe f11=0x4 | fixed:4 | - |
BREV
语法(Syntax)
brev rd:v rs1:v
描述:d = bitreverse(s1)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
brev | R1 op opcode=0xe f11=0x5 | fixed:4 | - |
REV8
语法(Syntax)
rev8 rd:v rs1:v
描述:d = byteswap(s1)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
rev8 | R1 op opcode=0xe f11=0x6 | fixed:4 | - |
SEXT
语法(Syntax)
sext.b rd:v rs1:v
sext.h rd:v rs1:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
sext.b | R1 op opcode=0xe f11=0x7 | fixed:4 | d = sext(s1[7:0]) | - |
sext.h | R1 op opcode=0xe f11=0x8 | fixed:4 | d = sext(s1[15:0]) | - |
ZEXT
语法(Syntax)
zext.b rd:v rs1:v
zext.h rd:v rs1:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
zext.b | R1 op opcode=0xe f11=0x9 | fixed:4 | d = zext(s1[7:0]) | - |
zext.h | R1 op opcode=0xe f11=0xa | fixed:4 | d = zext(s1[15:0]) | - |
LANEID
语法(Syntax)
laneid rd:v
描述:d = lane 号(0..31)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
laneid | R1 op opcode=0xe f11=0xb | fixed:4 | - |
NEG
语法(Syntax)
neg rd:v rs1:v
描述:d = 0 - s1
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
neg | R1 op opcode=0xe f11=0xc | fixed:4 | - |
ABS
语法(Syntax)
abs rd:v rs1:v
描述:d = abs_s(s1)(INT_MIN 回绕为 0x80000000)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
abs | R1 op opcode=0xe f11=0xd | fixed:4 | - |
MOV64
语法(Syntax)
mov64 rd:vp^2 rs1:vp^2
mov64.vu rd:vp^2 rs1:up^2
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mov64 | R1 op opcode=0xe f11=0xe | fixed:4 | d64 = s1_64 | p64 |
mov64.vu | R1U op opcode=0x10 f12=0x1 | fixed:4 | d64 = u1_64 | p64 |
MOVI
语法(Syntax)
movi rd:v imm:s18
描述:d = sext(imm18)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
movi | LI op opcode=0x12 | fixed:4 | - |
比较 → uniform 掩码(C / CU / CI)(26 条)
CMP
语法(Syntax)
cmp.eq.i32 rd:u rs1:v rs2:v
cmp.ne.i32 rd:u rs1:v rs2:v
cmp.lt.i32 rd:u rs1:v rs2:v
cmp.ge.i32 rd:u rs1:v rs2:v
cmp.lt.u32 rd:u rs1:v rs2:v
cmp.ge.u32 rd:u rs1:v rs2:v
cmp.eq.i32.vu rd:u rs1:v rs2:u
cmp.ne.i32.vu rd:u rs1:v rs2:u
cmp.lt.i32.vu rd:u rs1:v rs2:u
cmp.ge.i32.vu rd:u rs1:v rs2:u
cmp.lt.u32.vu rd:u rs1:v rs2:u
cmp.ge.u32.vu rd:u rs1:v rs2:u
cmp.eq.i64 rd:u rs1:vp^2 rs2:vp^2
cmp.ne.i64 rd:u rs1:vp^2 rs2:vp^2
cmp.lt.i64 rd:u rs1:vp^2 rs2:vp^2
cmp.ge.i64 rd:u rs1:vp^2 rs2:vp^2
cmp.lt.u64 rd:u rs1:vp^2 rs2:vp^2
cmp.ge.u64 rd:u rs1:vp^2 rs2:vp^2
cmp.eq.i32.vi rd:u rs1:v imm:s8
cmp.ne.i32.vi rd:u rs1:v imm:s8
cmp.lt.i32.vi rd:u rs1:v imm:s8
cmp.ge.i32.vi rd:u rs1:v imm:s8
cmp.lt.u32.vi rd:u rs1:v imm:s8
cmp.ge.u32.vi rd:u rs1:v imm:s8
cmp.gt.i32.vi rd:u rs1:v imm:s8
cmp.gt.u32.vi rd:u rs1:v imm:s8
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
cmp.eq.i32 | C op opcode=0x26 f5=0x0 | fixed:4 | U[d] = EXEC 内 s1 == s2 的 lane 掩码 | re ur |
cmp.ne.i32 | C op opcode=0x26 f5=0x1 | fixed:4 | U[d] = EXEC 内 s1 != s2 的 lane 掩码 | re ur |
cmp.lt.i32 | C op opcode=0x26 f5=0x2 | fixed:4 | U[d] = EXEC 内 s1 <s s2 的 lane 掩码 | re ur |
cmp.ge.i32 | C op opcode=0x26 f5=0x3 | fixed:4 | U[d] = EXEC 内 s1 >=s s2 的 lane 掩码 | re ur |
cmp.lt.u32 | C op opcode=0x26 f5=0x4 | fixed:4 | U[d] = EXEC 内 s1 <u s2 的 lane 掩码 | re ur |
cmp.ge.u32 | C op opcode=0x26 f5=0x5 | fixed:4 | U[d] = EXEC 内 s1 >=u s2 的 lane 掩码 | re ur |
cmp.eq.i32.vu | CU op opcode=0x28 f6=0x0 | fixed:4 | U[d] = EXEC 内 s1 == u2 的 lane 掩码 | re ur |
cmp.ne.i32.vu | CU op opcode=0x28 f6=0x1 | fixed:4 | U[d] = EXEC 内 s1 != u2 的 lane 掩码 | re ur |
cmp.lt.i32.vu | CU op opcode=0x28 f6=0x2 | fixed:4 | U[d] = EXEC 内 s1 <s u2 的 lane 掩码 | re ur |
cmp.ge.i32.vu | CU op opcode=0x28 f6=0x3 | fixed:4 | U[d] = EXEC 内 s1 >=s u2 的 lane 掩码 | re ur |
cmp.lt.u32.vu | CU op opcode=0x28 f6=0x4 | fixed:4 | U[d] = EXEC 内 s1 <u u2 的 lane 掩码 | re ur |
cmp.ge.u32.vu | CU op opcode=0x28 f6=0x5 | fixed:4 | U[d] = EXEC 内 s1 >=u u2 的 lane 掩码 | re ur |
cmp.eq.i64 | C op opcode=0x2a f5=0x0 | fixed:4 | U[d] = EXEC 内 s1_64 == s2_64 的 lane 掩码 | re ur p64 |
cmp.ne.i64 | C op opcode=0x2a f5=0x1 | fixed:4 | U[d] = EXEC 内 s1_64 != s2_64 的 lane 掩码 | re ur p64 |
cmp.lt.i64 | C op opcode=0x2a f5=0x2 | fixed:4 | U[d] = EXEC 内 s1_64 <s s2_64 的 lane 掩码 | re ur p64 |
cmp.ge.i64 | C op opcode=0x2a f5=0x3 | fixed:4 | U[d] = EXEC 内 s1_64 >=s s2_64 的 lane 掩码 | re ur p64 |
cmp.lt.u64 | C op opcode=0x2a f5=0x4 | fixed:4 | U[d] = EXEC 内 s1_64 <u s2_64 的 lane 掩码 | re ur p64 |
cmp.ge.u64 | C op opcode=0x2a f5=0x5 | fixed:4 | U[d] = EXEC 内 s1_64 >=u s2_64 的 lane 掩码 | re ur p64 |
cmp.eq.i32.vi | CI op opcode=0x2c f4=0x0 | fixed:4 | U[d] = EXEC 内 s1 == sext(imm) 的 lane 掩码 | re ur |
cmp.ne.i32.vi | CI op opcode=0x2c f4=0x1 | fixed:4 | U[d] = EXEC 内 s1 != sext(imm) 的 lane 掩码 | re ur |
cmp.lt.i32.vi | CI op opcode=0x2c f4=0x2 | fixed:4 | U[d] = EXEC 内 s1 <s sext(imm) 的 lane 掩码 | re ur |
cmp.ge.i32.vi | CI op opcode=0x2c f4=0x3 | fixed:4 | U[d] = EXEC 内 s1 >=s sext(imm) 的 lane 掩码 | re ur |
cmp.lt.u32.vi | CI op opcode=0x2c f4=0x4 | fixed:4 | U[d] = EXEC 内 s1 <u sext(imm) 的 lane 掩码 | re ur |
cmp.ge.u32.vi | CI op opcode=0x2c f4=0x5 | fixed:4 | U[d] = EXEC 内 s1 >=u sext(imm) 的 lane 掩码 | re ur |
cmp.gt.i32.vi | CI op opcode=0x2c f4=0x6 | fixed:4 | U[d] = EXEC 内 s1 >s sext(imm) 的 lane 掩码 | re ur |
cmp.gt.u32.vi | CI op opcode=0x2c f4=0x7 | fixed:4 | U[d] = EXEC 内 s1 >u sext(imm) 的 lane 掩码 | re ur |
VALU X 格式:选择、位域、乘加、med3、dp4a、perm(14 条)
SEL
语法(Syntax)
sel rd:v rs1:v rs2:v rs3:v
描述:d = (s3 != 0) ? s1 : s2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
sel | X op opcode=0x1 f10=0x4 | fixed:5 | - |
BFE
语法(Syntax)
bfe.u32 rd:v rs1:v rs2:v rs3:v
bfe.i32 rd:v rs1:v rs2:v rs3:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
bfe.u32 | X op opcode=0x1 f10=0x5 | fixed:5 | d = (s1 >>u s2[4:0]) & mask(s3[5:0]) | - |
bfe.i32 | X op opcode=0x1 f10=0x6 | fixed:5 | d = sext(field(s1, off=s2[4:0], width=s3[5:0]));越过 bit31 的部分读 0 | - |
BFI
语法(Syntax)
bfi rd:v rs1:v rs2:v rs3:v
描述:d = (s1 & s2) | (~s1 & s3)(s1 = bfm 型掩码)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bfi | X op opcode=0x1 f10=0x7 | fixed:5 | - |
PERM
语法(Syntax)
perm.b32 rd:v rs1:v rs2:v rs3:v
描述:d 的字节 k = 按 s3 字节 k 从 {s1, s2}(s1 在高位)选择;0x0c→0x00、0x0d→0xff,其余保留读 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
perm.b32 | X op opcode=0x1 f10=0x8 | fixed:5 | - |
MAD
语法(Syntax)
mad.u32 rd:v rs1:v rs2:v rs3:v
描述:d = (s1 * s2 + s3)[31:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mad.u32 | X op opcode=0x1 f10=0x9 | fixed:5 | - |
MAD64
语法(Syntax)
mad64.u32 rd:vp^2 rs1:v rs2:v rs3:vp^2
mad64.i32 rd:vp^2 rs1:v rs2:v rs3:vp^2
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
mad64.u32 | X op opcode=0x1 f10=0xa | fixed:5 | d64 = zext(s1) * zext(s2) + s3_64 | p64 |
mad64.i32 | X op opcode=0x1 f10=0xb | fixed:5 | d64 = sext(s1) * sext(s2) + s3_64 | p64 |
ALIGNBIT
语法(Syntax)
alignbit rd:v rs1:v rs2:v rs3:v
描述:d = ({s1, s2} >> s3[4:0])[31:0](s1 在高位的 funnel shift)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
alignbit | X op opcode=0x1 f10=0xc | fixed:5 | - |
MED3
语法(Syntax)
med3.i32 rd:v rs1:v rs2:v rs3:v
med3.u32 rd:v rs1:v rs2:v rs3:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
med3.i32 | X op opcode=0x1 f10=0xd | fixed:5 | d = 有符号中位数(s1, s2, s3) | - |
med3.u32 | X op opcode=0x1 f10=0xe | fixed:5 | d = 无符号中位数(s1, s2, s3) | - |
DP4A
语法(Syntax)
dp4a.i32 rd:v rs1:v rs2:v rs3:v
dp4a.u32 rd:v rs1:v rs2:v rs3:v
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
dp4a.i32 | X op opcode=0x1 f10=0xf | fixed:5 | d = s3 + sum_k sext(s1.b[k]) * sext(s2.b[k]) | - |
dp4a.u32 | X op opcode=0x1 f10=0x10 | fixed:5 | d = s3 + sum_k zext(s1.b[k]) * zext(s2.b[k]) | - |
SEL64
语法(Syntax)
sel64 rd:vp^2 rs1:vp^2 rs2:vp^2 rs3:v
描述:d64 = (s3 != 0) ? s1_64 : s2_64
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
sel64 | X op opcode=0x1 f10=0x1c | fixed:5 | p64 |
VALU literal 源(XL)(8 条)
MOV
语法(Syntax)
mov.vl rd:v imm:k32
描述:d = imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mov.vl | XL op opcode=0x5 f11=0x0 | fixed:4 | - |
ADD
语法(Syntax)
add.vl rd:v rs1:v imm:k32
描述:d = s1 + imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
add.vl | XL op opcode=0x5 f11=0x1 | fixed:4 | - |
SUBR
语法(Syntax)
subr.vl rd:v rs1:v imm:k32
描述:d = imm32 - s1
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
subr.vl | XL op opcode=0x5 f11=0x2 | fixed:4 | - |
AND
语法(Syntax)
and.vl rd:v rs1:v imm:k32
描述:d = s1 & imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
and.vl | XL op opcode=0x5 f11=0x3 | fixed:4 | - |
OR
语法(Syntax)
or.vl rd:v rs1:v imm:k32
描述:d = s1 | imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
or.vl | XL op opcode=0x5 f11=0x4 | fixed:4 | - |
XOR
语法(Syntax)
xor.vl rd:v rs1:v imm:k32
描述:d = s1 ^ imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
xor.vl | XL op opcode=0x5 f11=0x5 | fixed:4 | - |
MUL
语法(Syntax)
mul.vl rd:v rs1:v imm:k32
描述:d = s1 * imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
mul.vl | XL op opcode=0x5 f11=0x6 | fixed:4 | - |
ADDSX64
语法(Syntax)
addsx64.vl rd:vp^2 rs1:vp^2 imm:k32
描述:d64 = s1_64 + sext64(imm32)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
addsx64.vl | XL op opcode=0x5 f11=0xd | fixed:4 | p64 |
SALU uniform 运算(UR / UI)(49 条)
UADD
语法(Syntax)
uadd rd:u rs1:u rs2:u
描述:U[d] = u1 + u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uadd | UR op opcode=0x3c f7=0x0 | fixed:2 | ei |
USUB
语法(Syntax)
usub rd:u rs1:u rs2:u
描述:U[d] = u1 - u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usub | UR op opcode=0x3c f7=0x1 | fixed:2 | ei |
USLL
语法(Syntax)
usll rd:u rs1:u rs2:u
描述:U[d] = u1 << u2[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usll | UR op opcode=0x3c f7=0x2 | fixed:2 | ei |
USLT
语法(Syntax)
uslt rd:u rs1:u rs2:u
描述:U[d] = (int)u1 < (int)u2 ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uslt | UR op opcode=0x3c f7=0x3 | fixed:2 | ei |
USLTU
语法(Syntax)
usltu rd:u rs1:u rs2:u
描述:U[d] = u1 <u u2 ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usltu | UR op opcode=0x3c f7=0x4 | fixed:2 | ei |
UXOR
语法(Syntax)
uxor rd:u rs1:u rs2:u
描述:U[d] = u1 ^ u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uxor | UR op opcode=0x3c f7=0x5 | fixed:2 | ei |
USRL
语法(Syntax)
usrl rd:u rs1:u rs2:u
描述:U[d] = u1 >>u u2[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usrl | UR op opcode=0x3c f7=0x6 | fixed:2 | ei |
USRA
语法(Syntax)
usra rd:u rs1:u rs2:u
描述:U[d] = u1 >>s u2[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usra | UR op opcode=0x3c f7=0x7 | fixed:2 | ei |
UOR
语法(Syntax)
uor rd:u rs1:u rs2:u
描述:U[d] = u1 | u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uor | UR op opcode=0x3c f7=0x8 | fixed:2 | ei |
UAND
语法(Syntax)
uand rd:u rs1:u rs2:u
描述:U[d] = u1 & u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uand | UR op opcode=0x3c f7=0x9 | fixed:2 | ei |
UMIN
语法(Syntax)
umin rd:u rs1:u rs2:u
描述:U[d] = min_s(u1, u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umin | UR op opcode=0x3c f7=0xa | fixed:2 | ei |
UMAX
语法(Syntax)
umax rd:u rs1:u rs2:u
描述:U[d] = max_s(u1, u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umax | UR op opcode=0x3c f7=0xb | fixed:2 | ei |
UMINU
语法(Syntax)
uminu rd:u rs1:u rs2:u
描述:U[d] = min_u(u1, u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uminu | UR op opcode=0x3c f7=0xc | fixed:2 | ei |
UMAXU
语法(Syntax)
umaxu rd:u rs1:u rs2:u
描述:U[d] = max_u(u1, u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umaxu | UR op opcode=0x3c f7=0xd | fixed:2 | ei |
UANDN
语法(Syntax)
uandn rd:u rs1:u rs2:u
描述:U[d] = u1 & ~u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uandn | UR op opcode=0x3c f7=0xe | fixed:2 | ei |
UORN
语法(Syntax)
uorn rd:u rs1:u rs2:u
描述:U[d] = u1 | ~u2
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uorn | UR op opcode=0x3c f7=0xf | fixed:2 | ei |
UXNOR
语法(Syntax)
uxnor rd:u rs1:u rs2:u
描述:U[d] = ~(u1 ^ u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uxnor | UR op opcode=0x3c f7=0x10 | fixed:2 | ei |
UMUL
语法(Syntax)
umul rd:u rs1:u rs2:u
描述:U[d] = (u1 * u2)[31:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umul | UR op opcode=0x3c f7=0x11 | fixed:2 | ei |
UMULH
语法(Syntax)
umulh rd:u rs1:u rs2:u
描述:U[d] = (sext(u1) * sext(u2))[63:32]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umulh | UR op opcode=0x3c f7=0x12 | fixed:2 | ei |
UMULHU
语法(Syntax)
umulhu rd:u rs1:u rs2:u
描述:U[d] = (zext(u1) * zext(u2))[63:32]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umulhu | UR op opcode=0x3c f7=0x13 | fixed:2 | ei |
UMULHSU
语法(Syntax)
umulhsu rd:u rs1:u rs2:u
描述:U[d] = (sext(u1) * zext(u2))[63:32]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umulhsu | UR op opcode=0x3c f7=0x14 | fixed:2 | ei |
UCZERO
语法(Syntax)
uczero.eqz rd:u rs1:u rs2:u
uczero.nez rd:u rs1:u rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
uczero.eqz | UR op opcode=0x3c f7=0x15 | fixed:2 | U[d] = (u2 == 0) ? 0 : u1 | ei |
uczero.nez | UR op opcode=0x3c f7=0x16 | fixed:2 | U[d] = (u2 != 0) ? 0 : u1 | ei |
USEQ
语法(Syntax)
useq rd:u rs1:u rs2:u
描述:U[d] = (u1 == u2) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
useq | UR op opcode=0x3c f7=0x17 | fixed:2 | ei |
USNE
语法(Syntax)
usne rd:u rs1:u rs2:u
描述:U[d] = (u1 != u2) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usne | UR op opcode=0x3c f7=0x18 | fixed:2 | ei |
USGE
语法(Syntax)
usge rd:u rs1:u rs2:u
描述:U[d] = (int)u1 >= (int)u2 ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usge | UR op opcode=0x3c f7=0x19 | fixed:2 | ei |
USGEU
语法(Syntax)
usgeu rd:u rs1:u rs2:u
描述:U[d] = u1 >=u u2 ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usgeu | UR op opcode=0x3c f7=0x1a | fixed:2 | ei |
UBFM
语法(Syntax)
ubfm rd:u rs1:u rs2:u
描述:U[d] = 位域掩码(宽度 u1[5:0],偏移 u2[4:0])
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
ubfm | UR op opcode=0x3c f7=0x1b | fixed:2 | ei |
UBFE
语法(Syntax)
ubfe.u32 rd:u rs1:u rs2:u
ubfe.i32 rd:u rs1:u rs2:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
ubfe.u32 | UR op opcode=0x3c f7=0x1c | fixed:2 | U[d] = (u1 >>u u2[4:0]) & mask(u2[21:16])(u2[4:0] 偏移、u2[21:16] 宽度) | ei |
ubfe.i32 | UR op opcode=0x3c f7=0x1d | fixed:2 | ubfe.u32 的符号扩展变体 | ei |
UADD64
语法(Syntax)
uadd64 rd:up^2 rs1:up^2 rs2:up^2
描述:U64[d] = U64[u1] + U64[u2]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uadd64 | UR op opcode=0x3c f7=0x1e | fixed:2 | ei p64 |
USUB64
语法(Syntax)
usub64 rd:up^2 rs1:up^2 rs2:up^2
描述:U64[d] = U64[u1] - U64[u2]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usub64 | UR op opcode=0x3c f7=0x1f | fixed:2 | ei p64 |
UADDSX64
语法(Syntax)
uaddsx64 rd:up^2 rs1:up^2 rs2:u
描述:U64[d] = U64[u1] + sext64(u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uaddsx64 | UR op opcode=0x3c f7=0x20 | fixed:2 | ei p64 |
UADDZX64
语法(Syntax)
uaddzx64 rd:up^2 rs1:up^2 rs2:u
描述:U64[d] = U64[u1] + zext64(u2)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uaddzx64 | UR op opcode=0x3c f7=0x21 | fixed:2 | ei p64 |
UROL
语法(Syntax)
urol rd:u rs1:u rs2:u
描述:U[d] = rotl32(u1, u2[4:0])
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
urol | UR op opcode=0x3c f7=0x22 | fixed:2 | ei |
UROR
语法(Syntax)
uror rd:u rs1:u rs2:u
描述:U[d] = rotr32(u1, u2[4:0])
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uror | UR op opcode=0x3c f7=0x23 | fixed:2 | ei |
UADDI
语法(Syntax)
uaddi rd:u rs1:u imm:s10
描述:U[d] = u1 + sext(imm)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uaddi | UI op opcode=0x3e f3=0x0 | fixed:2 | ei |
UANDI
语法(Syntax)
uandi rd:u rs1:u imm:s10
描述:U[d] = u1 & sext(imm)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uandi | UI op opcode=0x3e f3=0x1 | fixed:2 | ei |
UORI
语法(Syntax)
uori rd:u rs1:u imm:s10
描述:U[d] = u1 | sext(imm)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uori | UI op opcode=0x3e f3=0x2 | fixed:2 | ei |
UXORI
语法(Syntax)
uxori rd:u rs1:u imm:s10
描述:U[d] = u1 ^ sext(imm)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uxori | UI op opcode=0x3e f3=0x3 | fixed:2 | ei |
USLLI
语法(Syntax)
uslli rd:u rs1:u imm:s10
描述:U[d] = u1 << imm[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uslli | UI op opcode=0x3e f3=0x4 | fixed:2 | ei |
USRLI
语法(Syntax)
usrli rd:u rs1:u imm:s10
描述:U[d] = u1 >>u imm[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usrli | UI op opcode=0x3e f3=0x5 | fixed:2 | ei |
USRAI
语法(Syntax)
usrai rd:u rs1:u imm:s10
描述:U[d] = u1 >>s imm[4:0]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usrai | UI op opcode=0x3e f3=0x6 | fixed:2 | ei |
USLTI
语法(Syntax)
uslti rd:u rs1:u imm:s10
描述:U[d] = (int)u1 < sext(imm) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uslti | UI op opcode=0x3e f3=0x7 | fixed:2 | ei |
USLTIU
语法(Syntax)
usltiu rd:u rs1:u imm:s10
描述:U[d] = u1 <u sext(imm) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usltiu | UI op opcode=0x40 f3=0x0 | fixed:2 | ei |
USEQI
语法(Syntax)
useqi rd:u rs1:u imm:s10
描述:U[d] = (u1 == sext(imm)) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
useqi | UI op opcode=0x40 f3=0x1 | fixed:2 | ei |
USNEI
语法(Syntax)
usnei rd:u rs1:u imm:s10
描述:U[d] = (u1 != sext(imm)) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usnei | UI op opcode=0x40 f3=0x2 | fixed:2 | ei |
UMULI
语法(Syntax)
umuli rd:u rs1:u imm:s10
描述:U[d] = u1 * sext(imm)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umuli | UI op opcode=0x40 f3=0x3 | fixed:2 | ei |
UADD64I
语法(Syntax)
uadd64i rd:up^2 rs1:up^2 imm:s10
描述:U64[d] = U64[u1] + sext64(imm)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uadd64i | UI op opcode=0x40 f3=0x4 | fixed:2 | ei p64 |
SALU 一元与 EXEC 控制(U1)(19 条)
UMOV
语法(Syntax)
umov rd:u rs1:u
描述:U[d] = u1
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umov | U1 op opcode=0x42 f13=0x0 | fixed:2 | ei |
UNOT
语法(Syntax)
unot rd:u rs1:u
描述:U[d] = ~u1
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
unot | U1 op opcode=0x42 f13=0x1 | fixed:2 | ei |
UCLZ
语法(Syntax)
uclz rd:u rs1:u
描述:U[d] = clz(u1)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uclz | U1 op opcode=0x42 f13=0x2 | fixed:2 | ei |
UCTZ
语法(Syntax)
uctz rd:u rs1:u
描述:U[d] = ctz(u1)(掩码最低置位 lane;u1 = 0 → 32)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uctz | U1 op opcode=0x42 f13=0x3 | fixed:2 | ei |
UCPOP
语法(Syntax)
ucpop rd:u rs1:u
描述:U[d] = popcount(u1)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
ucpop | U1 op opcode=0x42 f13=0x4 | fixed:2 | ei |
UBREV
语法(Syntax)
ubrev rd:u rs1:u
描述:U[d] = bitreverse(u1)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
ubrev | U1 op opcode=0x42 f13=0x5 | fixed:2 | ei |
USEXT
语法(Syntax)
usext.b rd:u rs1:u
usext.h rd:u rs1:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
usext.b | U1 op opcode=0x42 f13=0x6 | fixed:2 | U[d] = sext(u1[7:0]) | ei |
usext.h | U1 op opcode=0x42 f13=0x7 | fixed:2 | U[d] = sext(u1[15:0]) | ei |
UMOV64
语法(Syntax)
umov64 rd:up^2 rs1:up^2
描述:U64[d] = U64[u1]
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umov64 | U1 op opcode=0x42 f13=0x8 | fixed:2 | ei p64 |
UWQM
语法(Syntax)
uwqm rd:u rs1:u
描述:U[d] = wqm(u1)(每 4 位 quad 组:任一置位 → 0xf)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uwqm | U1 op opcode=0x42 f13=0x9 | fixed:2 | ei |
EXEC
语法(Syntax)
exec.get rd:u
exec.set rs1:u
exec.wqm rd:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
exec.get | U1 op opcode=0x42 f13=0x10 | fixed:2 | U[d] = EXEC | ei re |
exec.set | U1 op opcode=0x42 f13=0x11 | fixed:2 | EXEC = u1 | ei we |
exec.wqm | U1 op opcode=0x42 f13=0x18 | fixed:2 | U[d] = 旧 EXEC;EXEC = wqm(EXEC)(进入 whole-quad 模式) | ei re we |
SAVEEXEC
语法(Syntax)
saveexec.and rd:u rs1:u
saveexec.or rd:u rs1:u
saveexec.xor rd:u rs1:u
saveexec.andn1 rd:u rs1:u
saveexec.andn2 rd:u rs1:u
saveexec.mov rd:u rs1:u
| 变体 | 编码 | 延迟 | 语义 | 标志 |
|---|---|---|---|---|
saveexec.and | U1 op opcode=0x42 f13=0x12 | fixed:2 | U[d] = 旧 EXEC;EXEC = EXEC & u1 | ei re we |
saveexec.or | U1 op opcode=0x42 f13=0x13 | fixed:2 | U[d] = 旧 EXEC;EXEC = EXEC | u1 | ei re we |
saveexec.xor | U1 op opcode=0x42 f13=0x14 | fixed:2 | U[d] = 旧 EXEC;EXEC = EXEC ^ u1 | ei re we |
saveexec.andn1 | U1 op opcode=0x42 f13=0x15 | fixed:2 | U[d] = 旧 EXEC;EXEC = u1 & ~EXEC(else 分支掩码) | ei re we |
saveexec.andn2 | U1 op opcode=0x42 f13=0x16 | fixed:2 | U[d] = 旧 EXEC;EXEC = EXEC & ~u1(循环继续掩码) | ei re we |
saveexec.mov | U1 op opcode=0x42 f13=0x17 | fixed:2 | U[d] = 旧 EXEC;EXEC = u1 | ei re we |
uniform 立即数 / PC 相对(ULI)(3 条)
UMOVI
语法(Syntax)
umovi rd:u imm:s17
描述:U[d] = sext(imm17)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umovi | ULI op opcode=0x44 f2=0x0 | fixed:2 | ei |
UPC
语法(Syntax)
upc rd:u imm:o17
描述:U[d] = PC + imm(32 位代码偏移)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
upc | ULI op opcode=0x44 f2=0x1 | fixed:2 | ei |
UPCA
语法(Syntax)
upca rd:up^2 imm:o17
描述:U64[d] = CODE_BASE + PC + imm(位置无关 64 位 VA)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
upca | ULI op opcode=0x44 f2=0x2 | fixed:2 | ei p64 |
uniform + 32 位 literal(UL)(10 条)
UMOV
语法(Syntax)
umov.l rd:u imm:k32
描述:U[d] = imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umov.l | UL op opcode=0x11 f13=0x0 | fixed:2 | ei |
UADD
语法(Syntax)
uadd.l rd:u rs1:u imm:k32
描述:U[d] = u1 + imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uadd.l | UL op opcode=0x11 f13=0x1 | fixed:2 | ei |
UAND
语法(Syntax)
uand.l rd:u rs1:u imm:k32
描述:U[d] = u1 & imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uand.l | UL op opcode=0x11 f13=0x2 | fixed:2 | ei |
UOR
语法(Syntax)
uor.l rd:u rs1:u imm:k32
描述:U[d] = u1 | imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uor.l | UL op opcode=0x11 f13=0x3 | fixed:2 | ei |
UXOR
语法(Syntax)
uxor.l rd:u rs1:u imm:k32
描述:U[d] = u1 ^ imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uxor.l | UL op opcode=0x11 f13=0x4 | fixed:2 | ei |
UMUL
语法(Syntax)
umul.l rd:u rs1:u imm:k32
描述:U[d] = u1 * imm32
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
umul.l | UL op opcode=0x11 f13=0x5 | fixed:2 | ei |
USEQ
语法(Syntax)
useq.l rd:u rs1:u imm:k32
描述:U[d] = (u1 == imm32) ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
useq.l | UL op opcode=0x11 f13=0x6 | fixed:2 | ei |
USLT
语法(Syntax)
uslt.l rd:u rs1:u imm:k32
描述:U[d] = (int)u1 < (int)imm32 ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uslt.l | UL op opcode=0x11 f13=0x7 | fixed:2 | ei |
USLTU
语法(Syntax)
usltu.l rd:u rs1:u imm:k32
描述:U[d] = u1 <u imm32 ? 1 : 0
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
usltu.l | UL op opcode=0x11 f13=0x8 | fixed:2 | ei |
UADD64
语法(Syntax)
uadd64.l rd:up^2 rs1:up^2 imm:k32
描述:U64[d] = U64[u1] + sext64(imm32)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
uadd64.l | UL op opcode=0x11 f13=0x9 | fixed:2 | ei p64 |
分支与跳转(10 条)
JMP
语法(Syntax)
jmp imm:o22
描述:PC += imm(PC 相对字节偏移)
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
jmp | J op opcode=0x46 f3=0x0 | fixed:1 | ei eb br |
BEXECZ
语法(Syntax)
bexecz imm:o22
描述:EXEC == 0 → PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bexecz | J op opcode=0x46 f3=0x1 | fixed:1 | ei eb br cd re |
BEXECNZ
语法(Syntax)
bexecnz imm:o22
描述:EXEC != 0 → PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bexecnz | J op opcode=0x46 f3=0x2 | fixed:1 | ei eb br cd re |
JAL
语法(Syntax)
jal rd:u imm:o19
描述:U[d] = PC + 4;PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
jal | JL op opcode=0x48 | fixed:1 | ei eb br cal |
BZ
语法(Syntax)
bz rs1:u imm:o17
描述:u1 == 0 → PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bz | B op opcode=0x4a f2=0x0 | fixed:1 | ei eb br cd |
BNZ
语法(Syntax)
bnz rs1:u imm:o17
描述:u1 != 0 → PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bnz | B op opcode=0x4a f2=0x1 | fixed:1 | ei eb br cd |
BNONE
语法(Syntax)
bnone rs1:u imm:o17
描述:(u1 & EXEC) == 0 → PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bnone | B op opcode=0x4a f2=0x2 | fixed:1 | ei eb br cd re |
BANY
语法(Syntax)
bany rs1:u imm:o17
描述:(u1 & EXEC) != 0 → PC += imm
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
bany | B op opcode=0x4a f2=0x3 | fixed:1 | ei eb br cd re |
JR
语法(Syntax)
jr rs1:u imm:j10
描述:PC = (u1 + imm) & ~3
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
jr | JR op opcode=0x4c f3=0x0 | fixed:1 | ei eb ix |
JALR
语法(Syntax)
jalr rd:u rs1:u imm:j10
描述:t = (u1 + imm) & ~3;U[d] = PC + 4;PC = t
| 变体 | 编码 | 延迟 | 标志 |
|---|---|---|---|
jalr | JR op opcode=0x4c f3=0x1 | fixed:1 | ei eb ix cal |