Skip to main content

6.2 组 2:FP32 / FP16 / packed 16 位(unit: valu-fp,178 条)

binary32 运算(R / RU / X)(66 条)​

FADD​

语法(Syntax)

fadd.f32 rd:v rs1:v rs2:v
fadd.f32.vu rd:v rs1:v rs2:u
fadd.f32.m rd:v rs1:v rs2:v rm:rm neg:mod3 abs:mod3 sat:u1
变体编码延迟语义标志
fadd.f32R op opcode=0x14 f4=0x0fixed:4d = s1 + s2(binary32)fm
fadd.f32.vuRU op opcode=0x16 f5=0x0fixed:4d = s1 + u2(binary32)fm
fadd.f32.mX op opcode=0x1 f10=0x1fixed:5d = s1 + s2(rm / neg / abs / sat 修饰)fm rmo
FSUB​

语法(Syntax)

fsub.f32 rd:v rs1:v rs2:v
fsub.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fsub.f32R op opcode=0x14 f4=0x1fixed:4d = s1 - s2(binary32)fm
fsub.f32.vuRU op opcode=0x16 f5=0x1fixed:4d = s1 - u2(binary32)fm
FMUL​

语法(Syntax)

fmul.f32 rd:v rs1:v rs2:v
fmul.f32.vu rd:v rs1:v rs2:u
fmul.f32.m rd:v rs1:v rs2:v rm:rm neg:mod3 abs:mod3 sat:u1
变体编码延迟语义标志
fmul.f32R op opcode=0x14 f4=0x2fixed:4d = s1 * s2(binary32)fm
fmul.f32.vuRU op opcode=0x16 f5=0x2fixed:4d = s1 * u2(binary32)fm
fmul.f32.mX op opcode=0x1 f10=0x2fixed:5d = s1 * s2(rm / neg / abs / sat 修饰)fm rmo
FMIN​

语法(Syntax)

fmin.f32 rd:v rs1:v rs2:v
fmin.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fmin.f32R op opcode=0x14 f4=0x3fixed:4d = minimumNumber(s1, s2)(-0 < +0;单 NaN 返回另一操作数)fm
fmin.f32.vuRU op opcode=0x16 f5=0x3fixed:4d = minimumNumber(s1, u2)(-0 < +0;单 NaN 返回另一操作数)fm
FMAX​

语法(Syntax)

fmax.f32 rd:v rs1:v rs2:v
fmax.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fmax.f32R op opcode=0x14 f4=0x4fixed:4d = maximumNumber(s1, s2)(-0 < +0;单 NaN 返回另一操作数)fm
fmax.f32.vuRU op opcode=0x16 f5=0x4fixed:4d = maximumNumber(s1, u2)(-0 < +0;单 NaN 返回另一操作数)fm
FSGNJ​

语法(Syntax)

fsgnj.f32 rd:v rs1:v rs2:v
fsgnj.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fsgnj.f32R op opcode=0x14 f4=0x5fixed:4d = {s2.sign, s1[30:0]}(binary32)fm
fsgnj.f32.vuRU op opcode=0x16 f5=0x5fixed:4d = {u2.sign, s1[30:0]}(binary32)fm
FSGNJN​

语法(Syntax)

fsgnjn.f32 rd:v rs1:v rs2:v
fsgnjn.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fsgnjn.f32R op opcode=0x14 f4=0x6fixed:4d = {~s2.sign, s1[30:0]}(binary32)fm
fsgnjn.f32.vuRU op opcode=0x16 f5=0x6fixed:4d = {~u2.sign, s1[30:0]}(binary32)fm
FSGNJX​

语法(Syntax)

fsgnjx.f32 rd:v rs1:v rs2:v
fsgnjx.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fsgnjx.f32R op opcode=0x14 f4=0x7fixed:4d = {s1.sign ^ s2.sign, s1[30:0]}(binary32)fm
fsgnjx.f32.vuRU op opcode=0x16 f5=0x7fixed:4d = {s1.sign ^ u2.sign, s1[30:0]}(binary32)fm
FEQ​

语法(Syntax)

feq.f32 rd:v rs1:v rs2:v
feq.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
feq.f32R op opcode=0x14 f4=0x8fixed:4d = (s1 == s2) ? 1 : 0(quiet)fm
feq.f32.vuRU op opcode=0x16 f5=0x8fixed:4d = (s1 == u2) ? 1 : 0(quiet)fm
FLT​

语法(Syntax)

flt.f32 rd:v rs1:v rs2:v
flt.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
flt.f32R op opcode=0x14 f4=0x9fixed:4d = (s1 < s2) ? 1 : 0(signaling)fm
flt.f32.vuRU op opcode=0x16 f5=0x9fixed:4d = (s1 < u2) ? 1 : 0(signaling)fm
FLE​

语法(Syntax)

fle.f32 rd:v rs1:v rs2:v
fle.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fle.f32R op opcode=0x14 f4=0xafixed:4d = (s1 <= s2) ? 1 : 0(signaling)fm
fle.f32.vuRU op opcode=0x16 f5=0xafixed:4d = (s1 <= u2) ? 1 : 0(signaling)fm
FMAC​

语法(Syntax)

fmac.f32 rd:v* rs1:v rs2:v
fmac.f32.vu rd:v* rs1:v rs2:u
变体编码延迟语义标志
fmac.f32R op opcode=0x14 f4=0xbfixed:4d = fma(s1, s2, d)(一次舍入)fm
fmac.f32.vuRU op opcode=0x16 f5=0xbfixed:4d = fma(s1, u2, d)(一次舍入)fm
FLDEXP​

语法(Syntax)

fldexp.f32 rd:v rs1:v rs2:v
fldexp.f32.vu rd:v rs1:v rs2:u
变体编码延迟语义标志
fldexp.f32R op opcode=0x14 f4=0xcfixed:4d = s1 * 2^(int)s2(精确、正确舍入)fm
fldexp.f32.vuRU op opcode=0x16 f5=0xcfixed:4d = s1 * 2^(int)u2(精确、正确舍入)fm
FSUBR​

语法(Syntax)

fsubr.f32.vu rd:v rs1:v rs2:u

描述:d = u2 - s1(binary32)

变体编码延迟标志
fsubr.f32.vuRU op opcode=0x16 f5=0xdfixed:4fm
PKADD​

语法(Syntax)

pkadd.f16 rd:v rs1:v rs2:v
pkadd.i16 rd:v rs1:v rs2:v
变体编码延迟语义标志
pkadd.f16R op opcode=0x1a f4=0x0fixed:4d 两半各自做 binary16 加法h16 fm
pkadd.i16R op opcode=0x1a f4=0x5fixed:4packed 16 位加法(回绕)h16
PKMUL​

语法(Syntax)

pkmul.f16 rd:v rs1:v rs2:v
pkmul.i16 rd:v rs1:v rs2:v
变体编码延迟语义标志
pkmul.f16R op opcode=0x1a f4=0x1fixed:4d 两半各自做 binary16 乘法h16 fm
pkmul.i16R op opcode=0x1a f4=0x7fixed:4packed 16 位乘法(低 16 位)h16
PKMIN​

语法(Syntax)

pkmin.f16 rd:v rs1:v rs2:v
pkmin.i16 rd:v rs1:v rs2:v
pkmin.u16 rd:v rs1:v rs2:v
变体编码延迟语义标志
pkmin.f16R op opcode=0x1a f4=0x2fixed:4packed binary16 minimumNumberh16 fm
pkmin.i16R op opcode=0x1a f4=0xbfixed:4packed 有符号 16 位 minh16
pkmin.u16R op opcode=0x1a f4=0xdfixed:4packed 无符号 16 位 minh16
PKMAX​

语法(Syntax)

pkmax.f16 rd:v rs1:v rs2:v
pkmax.i16 rd:v rs1:v rs2:v
pkmax.u16 rd:v rs1:v rs2:v
变体编码延迟语义标志
pkmax.f16R op opcode=0x1a f4=0x3fixed:4packed binary16 maximumNumberh16 fm
pkmax.i16R op opcode=0x1a f4=0xcfixed:4packed 有符号 16 位 maxh16
pkmax.u16R op opcode=0x1a f4=0xefixed:4packed 无符号 16 位 maxh16
PKFMAC​

语法(Syntax)

pkfmac.f16 rd:v* rs1:v rs2:v

描述:d.x = fma(s1.x, s2.x, d.x),x ∈ {l, h}

变体编码延迟标志
pkfmac.f16R op opcode=0x1a f4=0x4fixed:4h16 fm
PKSUB​

语法(Syntax)

pksub.i16 rd:v rs1:v rs2:v
pksub.f16 rd:v rs1:v rs2:v
变体编码延迟语义标志
pksub.i16R op opcode=0x1a f4=0x6fixed:4packed 16 位减法(回绕)h16
pksub.f16R op opcode=0x1a f4=0xffixed:4d 两半各自做 binary16 减法h16 fm
PKSLL​

语法(Syntax)

pksll.i16 rd:v rs1:v rs2:v

描述:d.x = s1.x << s2.x[3:0]

变体编码延迟标志
pksll.i16R op opcode=0x1a f4=0x8fixed:4h16
PKSRL​

语法(Syntax)

pksrl.i16 rd:v rs1:v rs2:v

描述:d.x = s1.x >>u s2.x[3:0]

变体编码延迟标志
pksrl.i16R op opcode=0x1a f4=0x9fixed:4h16
PKSRA​

语法(Syntax)

pksra.i16 rd:v rs1:v rs2:v

描述:d.x = s1.x >>s s2.x[3:0]

变体编码延迟标志
pksra.i16R op opcode=0x1a f4=0xafixed:4h16
PKCVT​

语法(Syntax)

pkcvt.f16.f32 rd:v rs1:v rs2:v
pkcvt.unorm16.f32 rd:v rs1:v rs2:v
pkcvt.snorm16.f32 rd:v rs1:v rs2:v
pkcvt.u16.u32 rd:v rs1:v rs2:v
pkcvt.i16.i32 rd:v rs1:v rs2:v
pkcvt.unorm8.f32 rd:v* rs1:v rs2:v
pkcvt.unorm8h.f32 rd:v* rs1:v rs2:v
pkcvt.f16.f32.m rd:v rs1:v rs2:v rm:rm
变体编码延迟语义标志
pkcvt.f16.f32R op opcode=0x1c f4=0x0fixed:4d = {half(s2), half(s1)},MODE.rm16fm
pkcvt.unorm16.f32R op opcode=0x1c f4=0x1fixed:4d = {unorm16(s2), unorm16(s1)}(钳 [0,1],×65535,RNE)-
pkcvt.snorm16.f32R op opcode=0x1c f4=0x2fixed:4d = {snorm16(s2), snorm16(s1)}(钳 [-1,1],×32767,RNE;-1 → -32767)-
pkcvt.u16.u32R op opcode=0x1c f4=0x3fixed:4d = {sat_u16(s2), sat_u16(s1)}-
pkcvt.i16.i32R op opcode=0x1c f4=0x4fixed:4d = {sat_s16(s2), sat_s16(s1)}-
pkcvt.unorm8.f32R op opcode=0x1c f4=0x8fixed:4低 16 位写入两个 unorm8 字节(d[31:16] 保留)-
pkcvt.unorm8h.f32R op opcode=0x1c f4=0x9fixed:4高 16 位写入两个 unorm8 字节(d[15:0] 保留)-
pkcvt.f16.f32.mX op opcode=0x1 f10=0x1afixed:5d = {half(s2), half(s1)},显式 rmfm rmo h16
PACK​

语法(Syntax)

pack.lo.b16 rd:v rs1:v rs2:v
pack.hi.b16 rd:v rs1:v rs2:v
pack.lohi.b16 rd:v rs1:v rs2:v
变体编码延迟语义标志
pack.lo.b16R op opcode=0x1c f4=0x5fixed:4d = {s2[15:0], s1[15:0]}-
pack.hi.b16R op opcode=0x1c f4=0x6fixed:4d = {s2[31:16], s1[31:16]}-
pack.lohi.b16R op opcode=0x1c f4=0x7fixed:4d = {s2[31:16], s1[15:0]}-
FFMA​

语法(Syntax)

ffma.f32 rd:v rs1:v rs2:v rs3:v rm:rm neg:mod3 abs:mod3 sat:u1

描述:d = fma(s1, s2, s3)(一次舍入,显式 rm)

变体编码延迟标志
ffma.f32X op opcode=0x1 f10=0x0fixed:5fm rmo
FMED3​

语法(Syntax)

fmed3.f32 rd:v rs1:v rs2:v rs3:v

描述:d = median(s1, s2, s3)(有 NaN 时返回非 NaN 值的 min3)

变体编码延迟标志
fmed3.f32X op opcode=0x1 f10=0x3fixed:5fm
DOT2​

语法(Syntax)

dot2.f32.f16 rd:v rs1:v rs2:v rs3:v

描述:d = s3 + s1.ls2.l + s1.hs2.h(f16 乘积精确求和,一次舍入到 f32)

变体编码延迟标志
dot2.f32.f16X op opcode=0x1 f10=0x11fixed:5fm
PKFMA​

语法(Syntax)

pkfma.f16 rd:v rs1:v rs2:v rs3:v rm:rm

描述:d.x = fma(s1.x, s2.x, s3.x)(packed binary16,显式 rm)

变体编码延迟标志
pkfma.f16X op opcode=0x1 f10=0x12fixed:5fm h16 rmo
FCVT​

语法(Syntax)

fcvt.f32.i32.m rd:v rs1:v rm:rm
fcvt.f32.u32.m rd:v rs1:v rm:rm
fcvt.i32.f32.m rd:v rs1:v rm:rm
fcvt.u32.f32.m rd:v rs1:v rm:rm
fcvt.f16.f32.lo.m rd:v* rs1:v rm:rm
fcvt.f16.f32.hi.m rd:v* rs1:v rm:rm
变体编码延迟语义标志
fcvt.f32.i32.mX op opcode=0x1 f10=0x14fixed:5d = float(int32(s1)),显式 rmfm rmo
fcvt.f32.u32.mX op opcode=0x1 f10=0x15fixed:5d = float(uint32(s1)),显式 rmfm rmo
fcvt.i32.f32.mX op opcode=0x1 f10=0x16fixed:5d = int32(s1),RTZ 饱和,显式 rmfm rmo
fcvt.u32.f32.mX op opcode=0x1 f10=0x17fixed:5d = uint32(s1),RTZ 饱和,显式 rmfm rmo
fcvt.f16.f32.lo.mX op opcode=0x1 f10=0x18fixed:5d.l = half(s1),显式 rm(d.h 不变)fm rmo h16
fcvt.f16.f32.hi.mX op opcode=0x1 f10=0x19fixed:5d.h = half(s1),显式 rm(d.l 不变)fm rmo h16

binary32 literal 源(XL)(6 条)​

FADD​

语法(Syntax)

fadd.f32.vl rd:v rs1:v imm:k32

描述:d = s1 + f32(imm32)(binary32)

变体编码延迟标志
fadd.f32.vlXL op opcode=0x5 f11=0x7fixed:4fm
FMUL​

语法(Syntax)

fmul.f32.vl rd:v rs1:v imm:k32

描述:d = s1 * f32(imm32)(binary32)

变体编码延迟标志
fmul.f32.vlXL op opcode=0x5 f11=0x8fixed:4fm
FMAC​

语法(Syntax)

fmac.f32.vl rd:v* rs1:v imm:k32

描述:d = fma(s1, f32(imm32), d)(一次舍入)

变体编码延迟标志
fmac.f32.vlXL op opcode=0x5 f11=0x9fixed:4fm
FMIN​

语法(Syntax)

fmin.f32.vl rd:v rs1:v imm:k32

描述:d = minimumNumber(s1, f32(imm32))(-0 < +0;单 NaN 返回另一操作数)

变体编码延迟标志
fmin.f32.vlXL op opcode=0x5 f11=0xafixed:4fm
FMAX​

语法(Syntax)

fmax.f32.vl rd:v rs1:v imm:k32

描述:d = maximumNumber(s1, f32(imm32))(-0 < +0;单 NaN 返回另一操作数)

变体编码延迟标志
fmax.f32.vlXL op opcode=0x5 f11=0xbfixed:4fm
FSUBR​

语法(Syntax)

fsubr.f32.vl rd:v rs1:v imm:k32

描述:d = f32(imm32) - s1(binary32)

变体编码延迟标志
fsubr.f32.vlXL op opcode=0x5 f11=0xcfixed:4fm

binary32 一元与转换(R1)(21 条)​

FCLASS​

语法(Syntax)

fclass.f32 rd:v rs1:v

描述:d = fclass(s1)(RISC-V 10 位掩码)

变体编码延迟标志
fclass.f32R1 op opcode=0x18 f11=0x0fixed:4-
FFLOOR​

语法(Syntax)

ffloor.f32 rd:v rs1:v

描述:d = floor(s1)

变体编码延迟标志
ffloor.f32R1 op opcode=0x18 f11=0x1fixed:4fm
FCEIL​

语法(Syntax)

fceil.f32 rd:v rs1:v

描述:d = ceil(s1)

变体编码延迟标志
fceil.f32R1 op opcode=0x18 f11=0x2fixed:4fm
FTRUNC​

语法(Syntax)

ftrunc.f32 rd:v rs1:v

描述:d = trunc(s1)

变体编码延迟标志
ftrunc.f32R1 op opcode=0x18 f11=0x3fixed:4fm
FRNDNE​

语法(Syntax)

frndne.f32 rd:v rs1:v

描述:d = round_half_even(s1)

变体编码延迟标志
frndne.f32R1 op opcode=0x18 f11=0x4fixed:4fm
FFRACT​

语法(Syntax)

ffract.f32 rd:v rs1:v

描述:d = s1 - floor(s1)(钳到 < 1.0)

变体编码延迟标志
ffract.f32R1 op opcode=0x18 f11=0x5fixed:4fm
FSAT​

语法(Syntax)

fsat.f32 rd:v rs1:v

描述:d = clamp(s1, 0.0, 1.0);NaN → +0

变体编码延迟标志
fsat.f32R1 op opcode=0x18 f11=0x6fixed:4fm
FCVT​

语法(Syntax)

fcvt.i32.f32 rd:v rs1:v
fcvt.u32.f32 rd:v rs1:v
fcvt.f32.i32 rd:v rs1:v
fcvt.f32.u32 rd:v rs1:v
fcvt.f16.f32.lo rd:v* rs1:v
fcvt.f16.f32.hi rd:v* rs1:v
fcvt.f32.f16.lo rd:v rs1:v
fcvt.f32.f16.hi rd:v rs1:v
fcvt.f32.ubyte0 rd:v rs1:v
fcvt.f32.ubyte1 rd:v rs1:v
fcvt.f32.ubyte2 rd:v rs1:v
fcvt.f32.ubyte3 rd:v rs1:v
变体编码延迟语义标志
fcvt.i32.f32R1 op opcode=0x18 f11=0x7fixed:4d = int32(s1),RTZ 饱和;NaN → 0x7ffffffffm
fcvt.u32.f32R1 op opcode=0x18 f11=0x8fixed:4d = uint32(s1),RTZ 饱和;NaN → 0xfffffffffm
fcvt.f32.i32R1 op opcode=0x18 f11=0x9fixed:4d = float(int32(s1)),MODE.rmfm
fcvt.f32.u32R1 op opcode=0x18 f11=0xafixed:4d = float(uint32(s1)),MODE.rmfm
fcvt.f16.f32.loR1 op opcode=0x18 f11=0xbfixed:4d.l = half(s1)(d.h 不变)fm h16
fcvt.f16.f32.hiR1 op opcode=0x18 f11=0xcfixed:4d.h = half(s1)(d.l 不变)fm h16
fcvt.f32.f16.loR1 op opcode=0x18 f11=0xdfixed:4d = float(s1.l)(精确)fm h16
fcvt.f32.f16.hiR1 op opcode=0x18 f11=0xefixed:4d = float(s1.h)(精确)fm h16
fcvt.f32.ubyte0R1 op opcode=0x18 f11=0xffixed:4d = float(s1[7:0])-
fcvt.f32.ubyte1R1 op opcode=0x18 f11=0x10fixed:4d = float(s1[15:8])-
fcvt.f32.ubyte2R1 op opcode=0x18 f11=0x11fixed:4d = float(s1[23:16])-
fcvt.f32.ubyte3R1 op opcode=0x18 f11=0x12fixed:4d = float(s1[31:24])-
FREXP​

语法(Syntax)

frexp.mant.f32 rd:v rs1:v
frexp.exp.f32 rd:v rs1:v
变体编码延迟语义标志
frexp.mant.f32R1 op opcode=0x18 f11=0x13fixed:4d = frexp 尾数([0.5,1),符号保留;NaN/inf 原样透传、不置标志)fm
frexp.exp.f32R1 op opcode=0x18 f11=0x14fixed:4d = frexp 指数(int32;0/inf/NaN → 0)-

比较 → uniform 掩码(C / CU / CI)(30 条)​

CMP​

语法(Syntax)

cmp.eq.f32 rd:u rs1:v rs2:v
cmp.ne.f32 rd:u rs1:v rs2:v
cmp.lt.f32 rd:u rs1:v rs2:v
cmp.le.f32 rd:u rs1:v rs2:v
cmp.gt.f32 rd:u rs1:v rs2:v
cmp.ge.f32 rd:u rs1:v rs2:v
cmp.o.f32 rd:u rs1:v rs2:v
cmp.u.f32 rd:u rs1:v rs2:v
cmp.equ.f32 rd:u rs1:v rs2:v
cmp.neu.f32 rd:u rs1:v rs2:v
cmp.ltu.f32 rd:u rs1:v rs2:v
cmp.leu.f32 rd:u rs1:v rs2:v
cmp.gtu.f32 rd:u rs1:v rs2:v
cmp.geu.f32 rd:u rs1:v rs2:v
cmp.class.f32 rd:u rs1:v rs2:v
cmp.eq.f32.vu rd:u rs1:v rs2:u
cmp.ne.f32.vu rd:u rs1:v rs2:u
cmp.lt.f32.vu rd:u rs1:v rs2:u
cmp.le.f32.vu rd:u rs1:v rs2:u
cmp.gt.f32.vu rd:u rs1:v rs2:u
cmp.ge.f32.vu rd:u rs1:v rs2:u
cmp.o.f32.vu rd:u rs1:v rs2:u
cmp.u.f32.vu rd:u rs1:v rs2:u
cmp.equ.f32.vu rd:u rs1:v rs2:u
cmp.neu.f32.vu rd:u rs1:v rs2:u
cmp.ltu.f32.vu rd:u rs1:v rs2:u
cmp.leu.f32.vu rd:u rs1:v rs2:u
cmp.gtu.f32.vu rd:u rs1:v rs2:u
cmp.geu.f32.vu rd:u rs1:v rs2:u
cmp.class.f32.vu rd:u rs1:v rs2:u
变体编码延迟语义标志
cmp.eq.f32C op opcode=0x26 f5=0x6fixed:4U[d] = EXEC 内满足 s1 ordered == s2(binary32)的 lane 掩码re ur fm
cmp.ne.f32C op opcode=0x26 f5=0x7fixed:4U[d] = EXEC 内满足 s1 ordered != s2(binary32)的 lane 掩码re ur fm
cmp.lt.f32C op opcode=0x26 f5=0x8fixed:4U[d] = EXEC 内满足 s1 ordered < s2(binary32)的 lane 掩码re ur fm
cmp.le.f32C op opcode=0x26 f5=0x9fixed:4U[d] = EXEC 内满足 s1 ordered <= s2(binary32)的 lane 掩码re ur fm
cmp.gt.f32C op opcode=0x26 f5=0xafixed:4U[d] = EXEC 内满足 s1 ordered > s2(binary32)的 lane 掩码re ur fm
cmp.ge.f32C op opcode=0x26 f5=0xbfixed:4U[d] = EXEC 内满足 s1 ordered >= s2(binary32)的 lane 掩码re ur fm
cmp.o.f32C op opcode=0x26 f5=0xcfixed:4U[d] = EXEC 内满足 s1 ordered(均非 NaN) s2(binary32)的 lane 掩码re ur fm
cmp.u.f32C op opcode=0x26 f5=0xdfixed:4U[d] = EXEC 内满足 s1 unordered(任一 NaN) s2(binary32)的 lane 掩码re ur fm
cmp.equ.f32C op opcode=0x26 f5=0xefixed:4U[d] = EXEC 内满足 s1 unordered 或 == s2(binary32)的 lane 掩码re ur fm
cmp.neu.f32C op opcode=0x26 f5=0xffixed:4U[d] = EXEC 内满足 s1 unordered 或 != s2(binary32)的 lane 掩码re ur fm
cmp.ltu.f32C op opcode=0x26 f5=0x10fixed:4U[d] = EXEC 内满足 s1 unordered 或 < s2(binary32)的 lane 掩码re ur fm
cmp.leu.f32C op opcode=0x26 f5=0x11fixed:4U[d] = EXEC 内满足 s1 unordered 或 <= s2(binary32)的 lane 掩码re ur fm
cmp.gtu.f32C op opcode=0x26 f5=0x12fixed:4U[d] = EXEC 内满足 s1 unordered 或 > s2(binary32)的 lane 掩码re ur fm
cmp.geu.f32C op opcode=0x26 f5=0x13fixed:4U[d] = EXEC 内满足 s1 unordered 或 >= s2(binary32)的 lane 掩码re ur fm
cmp.class.f32C op opcode=0x26 f5=0x14fixed:4U[d] = EXEC 内 (fclass(s1) & s2) != 0 的 lane 掩码re ur fm
cmp.eq.f32.vuCU op opcode=0x28 f6=0x6fixed:4U[d] = EXEC 内满足 s1 ordered == u2(binary32)的 lane 掩码re ur fm
cmp.ne.f32.vuCU op opcode=0x28 f6=0x7fixed:4U[d] = EXEC 内满足 s1 ordered != u2(binary32)的 lane 掩码re ur fm
cmp.lt.f32.vuCU op opcode=0x28 f6=0x8fixed:4U[d] = EXEC 内满足 s1 ordered < u2(binary32)的 lane 掩码re ur fm
cmp.le.f32.vuCU op opcode=0x28 f6=0x9fixed:4U[d] = EXEC 内满足 s1 ordered <= u2(binary32)的 lane 掩码re ur fm
cmp.gt.f32.vuCU op opcode=0x28 f6=0xafixed:4U[d] = EXEC 内满足 s1 ordered > u2(binary32)的 lane 掩码re ur fm
cmp.ge.f32.vuCU op opcode=0x28 f6=0xbfixed:4U[d] = EXEC 内满足 s1 ordered >= u2(binary32)的 lane 掩码re ur fm
cmp.o.f32.vuCU op opcode=0x28 f6=0xcfixed:4U[d] = EXEC 内满足 s1 ordered(均非 NaN) u2(binary32)的 lane 掩码re ur fm
cmp.u.f32.vuCU op opcode=0x28 f6=0xdfixed:4U[d] = EXEC 内满足 s1 unordered(任一 NaN) u2(binary32)的 lane 掩码re ur fm
cmp.equ.f32.vuCU op opcode=0x28 f6=0xefixed:4U[d] = EXEC 内满足 s1 unordered 或 == u2(binary32)的 lane 掩码re ur fm
cmp.neu.f32.vuCU op opcode=0x28 f6=0xffixed:4U[d] = EXEC 内满足 s1 unordered 或 != u2(binary32)的 lane 掩码re ur fm
cmp.ltu.f32.vuCU op opcode=0x28 f6=0x10fixed:4U[d] = EXEC 内满足 s1 unordered 或 < u2(binary32)的 lane 掩码re ur fm
cmp.leu.f32.vuCU op opcode=0x28 f6=0x11fixed:4U[d] = EXEC 内满足 s1 unordered 或 <= u2(binary32)的 lane 掩码re ur fm
cmp.gtu.f32.vuCU op opcode=0x28 f6=0x12fixed:4U[d] = EXEC 内满足 s1 unordered 或 > u2(binary32)的 lane 掩码re ur fm
cmp.geu.f32.vuCU op opcode=0x28 f6=0x13fixed:4U[d] = EXEC 内满足 s1 unordered 或 >= u2(binary32)的 lane 掩码re ur fm
cmp.class.f32.vuCU op opcode=0x28 f6=0x14fixed:4U[d] = EXEC 内 (fclass(s1) & u2) != 0 的 lane 掩码re ur fm

16 位半寄存器运算(H)(35 条)​

FADD​

语法(Syntax)

fadd.f16 rd:h rs1:h rs2:h rm:rm neg:mod3 abs:mod3 sat:u1

描述:d = s1 + s2(binary16)

变体编码延迟标志
fadd.f16H op opcode=0x9 f10=0x0fixed:5h16 fm rmo
FSUB​

语法(Syntax)

fsub.f16 rd:h rs1:h rs2:h rm:rm neg:mod3 abs:mod3 sat:u1

描述:d = s1 - s2(binary16)

变体编码延迟标志
fsub.f16H op opcode=0x9 f10=0x1fixed:5h16 fm rmo
FMUL​

语法(Syntax)

fmul.f16 rd:h rs1:h rs2:h rm:rm neg:mod3 abs:mod3 sat:u1

描述:d = s1 * s2(binary16)

变体编码延迟标志
fmul.f16H op opcode=0x9 f10=0x2fixed:5h16 fm rmo
FFMA​

语法(Syntax)

ffma.f16 rd:h rs1:h rs2:h rs3:h rm:rm neg:mod3 abs:mod3 sat:u1

描述:d = fma(s1, s2, s3)(显式 rm)(binary16)

变体编码延迟标志
ffma.f16H op opcode=0x9 f10=0x3fixed:5h16 fm rmo
FMIN​

语法(Syntax)

fmin.f16 rd:h rs1:h rs2:h

描述:d = minimumNumber(s1, s2)(binary16)

变体编码延迟标志
fmin.f16H op opcode=0x9 f10=0x4fixed:5h16 fm
FMAX​

语法(Syntax)

fmax.f16 rd:h rs1:h rs2:h

描述:d = maximumNumber(s1, s2)(binary16)

变体编码延迟标志
fmax.f16H op opcode=0x9 f10=0x5fixed:5h16 fm
FSGNJ​

语法(Syntax)

fsgnj.f16 rd:h rs1:h rs2:h

描述:d = {s2.sign, s1[14:0]}(binary16)

变体编码延迟标志
fsgnj.f16H op opcode=0x9 f10=0x6fixed:5h16
FSGNJN​

语法(Syntax)

fsgnjn.f16 rd:h rs1:h rs2:h

描述:d = {~s2.sign, s1[14:0]}(binary16)

变体编码延迟标志
fsgnjn.f16H op opcode=0x9 f10=0x7fixed:5h16
FSGNJX​

语法(Syntax)

fsgnjx.f16 rd:h rs1:h rs2:h

描述:d = {s1.sign ^ s2.sign, s1[14:0]}(binary16)

变体编码延迟标志
fsgnjx.f16H op opcode=0x9 f10=0x8fixed:5h16
FFLOOR​

语法(Syntax)

ffloor.f16 rd:h rs1:h

描述:d = floor(s1)(binary16)

变体编码延迟标志
ffloor.f16H op opcode=0x9 f10=0x9fixed:5h16 fm
FCEIL​

语法(Syntax)

fceil.f16 rd:h rs1:h

描述:d = ceil(s1)(binary16)

变体编码延迟标志
fceil.f16H op opcode=0x9 f10=0xafixed:5h16 fm
FTRUNC​

语法(Syntax)

ftrunc.f16 rd:h rs1:h

描述:d = trunc(s1)(binary16)

变体编码延迟标志
ftrunc.f16H op opcode=0x9 f10=0xbfixed:5h16 fm
FRNDNE​

语法(Syntax)

frndne.f16 rd:h rs1:h

描述:d = round_half_even(s1)(binary16)

变体编码延迟标志
frndne.f16H op opcode=0x9 f10=0xcfixed:5h16 fm
FFRACT​

语法(Syntax)

ffract.f16 rd:h rs1:h

描述:d = s1 - floor(s1)(钳到 < 1.0)(binary16)

变体编码延迟标志
ffract.f16H op opcode=0x9 f10=0xdfixed:5h16 fm
MOV​

语法(Syntax)

mov.b16 rd:h rs1:h

描述:d = s1(16 位)

变体编码延迟标志
mov.b16H op opcode=0x9 f10=0xefixed:5h16
ADD​

语法(Syntax)

add.i16 rd:h rs1:h rs2:h

描述:16 位加法(回绕)

变体编码延迟标志
add.i16H op opcode=0x9 f10=0xffixed:5h16
SUB​

语法(Syntax)

sub.i16 rd:h rs1:h rs2:h

描述:16 位减法(回绕)

变体编码延迟标志
sub.i16H op opcode=0x9 f10=0x10fixed:5h16
MUL​

语法(Syntax)

mul.i16 rd:h rs1:h rs2:h

描述:16 位乘法(低 16 位)

变体编码延迟标志
mul.i16H op opcode=0x9 f10=0x11fixed:5h16
SLL​

语法(Syntax)

sll.i16 rd:h rs1:h rs2:h

描述:d = s1 << s2[3:0]

变体编码延迟标志
sll.i16H op opcode=0x9 f10=0x12fixed:5h16
SRL​

语法(Syntax)

srl.i16 rd:h rs1:h rs2:h

描述:d = s1 >>u s2[3:0]

变体编码延迟标志
srl.i16H op opcode=0x9 f10=0x13fixed:5h16
SRA​

语法(Syntax)

sra.i16 rd:h rs1:h rs2:h

描述:d = s1 >>s s2[3:0]

变体编码延迟标志
sra.i16H op opcode=0x9 f10=0x14fixed:5h16
AND​

语法(Syntax)

and.b16 rd:h rs1:h rs2:h

描述:d = s1 & s2

变体编码延迟标志
and.b16H op opcode=0x9 f10=0x15fixed:5h16
OR​

语法(Syntax)

or.b16 rd:h rs1:h rs2:h

描述:d = s1 | s2

变体编码延迟标志
or.b16H op opcode=0x9 f10=0x16fixed:5h16
XOR​

语法(Syntax)

xor.b16 rd:h rs1:h rs2:h

描述:d = s1 ^ s2

变体编码延迟标志
xor.b16H op opcode=0x9 f10=0x17fixed:5h16
MIN​

语法(Syntax)

min.i16 rd:h rs1:h rs2:h
min.u16 rd:h rs1:h rs2:h
变体编码延迟语义标志
min.i16H op opcode=0x9 f10=0x18fixed:5有符号 16 位 minh16
min.u16H op opcode=0x9 f10=0x1afixed:5无符号 16 位 minh16
MAX​

语法(Syntax)

max.i16 rd:h rs1:h rs2:h
max.u16 rd:h rs1:h rs2:h
变体编码延迟语义标志
max.i16H op opcode=0x9 f10=0x19fixed:5有符号 16 位 maxh16
max.u16H op opcode=0x9 f10=0x1bfixed:5无符号 16 位 maxh16
FCVT​

语法(Syntax)

fcvt.f16.i16 rd:h rs1:h
fcvt.f16.u16 rd:h rs1:h
fcvt.i16.f16 rd:h rs1:h
fcvt.u16.f16 rd:h rs1:h
变体编码延迟语义标志
fcvt.f16.i16H op opcode=0x9 f10=0x1cfixed:5d = half(int16(s1)),MODE.rm16h16 fm
fcvt.f16.u16H op opcode=0x9 f10=0x1dfixed:5d = half(uint16(s1))h16 fm
fcvt.i16.f16H op opcode=0x9 f10=0x1efixed:5d = int16(s1),RTZ 饱和h16 fm
fcvt.u16.f16H op opcode=0x9 f10=0x1ffixed:5d = uint16(s1),RTZ 饱和h16 fm
FCLASS​

语法(Syntax)

fclass.f16 rd:h rs1:h

描述:d = fclass(s1)(10 位掩码写入半寄存器)

变体编码延迟标志
fclass.f16H op opcode=0x9 f10=0x20fixed:5h16
SEL​

语法(Syntax)

sel.b16 rd:h rs1:h rs2:h rs3:h

描述:d = (s3 != 0) ? s1 : s2(16 位)

变体编码延迟标志
sel.b16H op opcode=0x9 f10=0x21fixed:5h16
FLDEXP​

语法(Syntax)

fldexp.f16 rd:h rs1:h rs2:h

描述:d = s1 * 2^(int16)s2(binary32 中精确计算后舍入)

变体编码延迟标志
fldexp.f16H op opcode=0x9 f10=0x22fixed:5h16 fm

16 位比较 → uniform 掩码(HC)(20 条)​

CMP​

语法(Syntax)

cmp.eq.f16 rd:u rs1:h rs2:h
cmp.ne.f16 rd:u rs1:h rs2:h
cmp.lt.f16 rd:u rs1:h rs2:h
cmp.le.f16 rd:u rs1:h rs2:h
cmp.gt.f16 rd:u rs1:h rs2:h
cmp.ge.f16 rd:u rs1:h rs2:h
cmp.o.f16 rd:u rs1:h rs2:h
cmp.u.f16 rd:u rs1:h rs2:h
cmp.equ.f16 rd:u rs1:h rs2:h
cmp.neu.f16 rd:u rs1:h rs2:h
cmp.ltu.f16 rd:u rs1:h rs2:h
cmp.leu.f16 rd:u rs1:h rs2:h
cmp.gtu.f16 rd:u rs1:h rs2:h
cmp.geu.f16 rd:u rs1:h rs2:h
cmp.eq.i16 rd:u rs1:h rs2:h
cmp.ne.i16 rd:u rs1:h rs2:h
cmp.lt.i16 rd:u rs1:h rs2:h
cmp.ge.i16 rd:u rs1:h rs2:h
cmp.lt.u16 rd:u rs1:h rs2:h
cmp.ge.u16 rd:u rs1:h rs2:h
变体编码延迟语义标志
cmp.eq.f16HC op opcode=0xd f10=0x0fixed:5U[d] = EXEC 内满足 s1 ordered == s2(binary16)的 lane 掩码h16 re ur fm
cmp.ne.f16HC op opcode=0xd f10=0x1fixed:5U[d] = EXEC 内满足 s1 ordered != s2(binary16)的 lane 掩码h16 re ur fm
cmp.lt.f16HC op opcode=0xd f10=0x2fixed:5U[d] = EXEC 内满足 s1 ordered < s2(binary16)的 lane 掩码h16 re ur fm
cmp.le.f16HC op opcode=0xd f10=0x3fixed:5U[d] = EXEC 内满足 s1 ordered <= s2(binary16)的 lane 掩码h16 re ur fm
cmp.gt.f16HC op opcode=0xd f10=0x4fixed:5U[d] = EXEC 内满足 s1 ordered > s2(binary16)的 lane 掩码h16 re ur fm
cmp.ge.f16HC op opcode=0xd f10=0x5fixed:5U[d] = EXEC 内满足 s1 ordered >= s2(binary16)的 lane 掩码h16 re ur fm
cmp.o.f16HC op opcode=0xd f10=0x6fixed:5U[d] = EXEC 内满足 s1 ordered(均非 NaN) s2(binary16)的 lane 掩码h16 re ur fm
cmp.u.f16HC op opcode=0xd f10=0x7fixed:5U[d] = EXEC 内满足 s1 unordered(任一 NaN) s2(binary16)的 lane 掩码h16 re ur fm
cmp.equ.f16HC op opcode=0xd f10=0x8fixed:5U[d] = EXEC 内满足 s1 unordered 或 == s2(binary16)的 lane 掩码h16 re ur fm
cmp.neu.f16HC op opcode=0xd f10=0x9fixed:5U[d] = EXEC 内满足 s1 unordered 或 != s2(binary16)的 lane 掩码h16 re ur fm
cmp.ltu.f16HC op opcode=0xd f10=0xafixed:5U[d] = EXEC 内满足 s1 unordered 或 < s2(binary16)的 lane 掩码h16 re ur fm
cmp.leu.f16HC op opcode=0xd f10=0xbfixed:5U[d] = EXEC 内满足 s1 unordered 或 <= s2(binary16)的 lane 掩码h16 re ur fm
cmp.gtu.f16HC op opcode=0xd f10=0xcfixed:5U[d] = EXEC 内满足 s1 unordered 或 > s2(binary16)的 lane 掩码h16 re ur fm
cmp.geu.f16HC op opcode=0xd f10=0xdfixed:5U[d] = EXEC 内满足 s1 unordered 或 >= s2(binary16)的 lane 掩码h16 re ur fm
cmp.eq.i16HC op opcode=0xd f10=0xefixed:5U[d] = EXEC 内 s1 == s2 的 lane 掩码(16 位比较,只统计活跃 lane)h16 re ur
cmp.ne.i16HC op opcode=0xd f10=0xffixed:5U[d] = EXEC 内 s1 != s2 的 lane 掩码(16 位比较,只统计活跃 lane)h16 re ur
cmp.lt.i16HC op opcode=0xd f10=0x10fixed:5U[d] = EXEC 内 s1 <s s2 的 lane 掩码(16 位比较,只统计活跃 lane)h16 re ur
cmp.ge.i16HC op opcode=0xd f10=0x11fixed:5U[d] = EXEC 内 s1 >=s s2 的 lane 掩码(16 位比较,只统计活跃 lane)h16 re ur
cmp.lt.u16HC op opcode=0xd f10=0x12fixed:5U[d] = EXEC 内 s1 <u s2 的 lane 掩码(16 位比较,只统计活跃 lane)h16 re ur
cmp.ge.u16HC op opcode=0xd f10=0x13fixed:5U[d] = EXEC 内 s1 >=u s2 的 lane 掩码(16 位比较,只统计活跃 lane)h16 re ur