diff --git a/extensions/rv_c_zicfiss b/extensions/rv_c_zicfiss new file mode 100644 index 00000000..83431c6a --- /dev/null +++ b/extensions/rv_c_zicfiss @@ -0,0 +1,5 @@ +# c.sspush x1 -> c.mop.1 +$pseudo_op rv_zcmop::c.mop.N c.sspush.x1 1..0=1 6..2=0 11..7=1 12=0 15..13=3 + +# c.sspopchk x5 -> c.mop.5 +$pseudo_op rv_zcmop::c.mop.N c.sspopchk.x5 1..0=1 6..2=0 11..7=5 12=0 15..13=3 diff --git a/extensions/rv_smdbltrp b/extensions/rv_smdbltrp new file mode 100644 index 00000000..49dd9a0f --- /dev/null +++ b/extensions/rv_smdbltrp @@ -0,0 +1 @@ +sctrclr 11..7=0 19..15=0 31..20=0x104 14..12=0 6..2=0x1C 1..0=3 diff --git a/extensions/rv_smrnmi b/extensions/rv_smrnmi new file mode 100644 index 00000000..db714a37 --- /dev/null +++ b/extensions/rv_smrnmi @@ -0,0 +1 @@ +mnret 11..7=0 19..15=0 31..20=0x702 14..12=0 6..2=0x1C 1..0=3 diff --git a/extensions/rv_zfbfmin b/extensions/rv_zfbfmin new file mode 100644 index 00000000..003c7b99 --- /dev/null +++ b/extensions/rv_zfbfmin @@ -0,0 +1,2 @@ +fcvt.bf16.s rd rs1 24..20=8 31..27=0x08 rm 26..25=2 6..2=0x14 1..0=3 +fcvt.s.bf16 rd rs1 24..20=6 31..27=0x08 rm 26..25=0 6..2=0x14 1..0=3 diff --git a/extensions/rv_zicfilp b/extensions/rv_zicfilp new file mode 100644 index 00000000..1ef4844e --- /dev/null +++ b/extensions/rv_zicfilp @@ -0,0 +1,2 @@ +# auipc x0 imm20 -> lpad imm20 +$pseudo_op rv_i::auipc lpad imm20 11..7=0 6..2=0x05 1..0=3 diff --git a/extensions/rv_zicfiss b/extensions/rv_zicfiss new file mode 100644 index 00000000..7e4fa47a --- /dev/null +++ b/extensions/rv_zicfiss @@ -0,0 +1,13 @@ +ssamoswap.w rd rs1 rs2 aq rl 31..29=2 28..27=1 14..12=2 6..2=0x0B 1..0=3 +ssamoswap.d rd rs1 rs2 aq rl 31..29=2 28..27=1 14..12=3 6..2=0x0B 1..0=3 + +# sspopchk x1/x5 -> mop.r.28 rd=x0, rs1=x1/x5 +$pseudo_op rv_zimop::mop.r.N sspopchk.x1 30=1 27=1 26=1 21=0 20=0 31=1 29..28=0 25..22=7 19..15=1 14..12=4 11..7=0 6..2=0x1C 1..0=3 +$pseudo_op rv_zimop::mop.r.N sspopchk.x5 30=1 27=1 26=1 21=0 20=0 31=1 29..28=0 25..22=7 19..15=5 14..12=4 11..7=0 6..2=0x1C 1..0=3 + +# ssrdp rd != x0 -> mop.r.28 rd!=x0, rs1=x0 +$pseudo_op rv_zimop::mop.r.N ssrdp rd_n0 30=1 27=1 26=1 21=0 20=0 31=1 29..28=0 25..22=7 19..15=0 14..12=4 6..2=0x1C 1..0=3 + +# sspush x1/x5 -> mop.rr.7 rd=x0, rs2=x1/x5, rs1=x0 +$pseudo_op rv_zimop::mop.rr.N sspush.x1 30=1 27=1 26=1 31=1 29..28=0 25=1 24..20=1 19..15=0 14..12=4 11..7=0 6..2=0x1C 1..0=3 +$pseudo_op rv_zimop::mop.rr.N sspush.x5 30=1 27=1 26=1 31=1 29..28=0 25=1 24..20=5 19..15=0 14..12=4 11..7=0 6..2=0x1C 1..0=3 diff --git a/extensions/rv_zvfbfmin b/extensions/rv_zvfbfmin new file mode 100644 index 00000000..89089592 --- /dev/null +++ b/extensions/rv_zvfbfmin @@ -0,0 +1,2 @@ +vfncvtbf16.f.f.w 31..26=0x12 vm vs2 19..15=0x1D 14..12=0x1 vd 6..0=0x57 +vfwcvtbf16.f.f.v 31..26=0x12 vm vs2 19..15=0x0D 14..12=0x1 vd 6..0=0x57 diff --git a/extensions/rv_zvfbfwma b/extensions/rv_zvfbfwma new file mode 100644 index 00000000..27b4ae67 --- /dev/null +++ b/extensions/rv_zvfbfwma @@ -0,0 +1,2 @@ +vfwmaccbf16.vv 31..26=0x3B vm vs2 vs1 14..12=0x1 vd 6..0=0x57 +vfwmaccbf16.vf 31..26=0x3B vm vs2 rs1 14..12=0x5 vd 6..0=0x57