Ops!(
"amoadd.d" = [
Single(0x0000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.d.aq" = [
Single(0x0400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.d.aqrl" = [
Single(0x0600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.d.rl" = [
Single(0x0200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.w" = [
Single(0x0000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.w.aq" = [
Single(0x0400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.w.aqrl" = [
Single(0x0600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoadd.w.rl" = [
Single(0x0200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.d" = [
Single(0x6000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.d.aq" = [
Single(0x6400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.d.aqrl" = [
Single(0x6600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.d.rl" = [
Single(0x6200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.w" = [
Single(0x6000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.w.aq" = [
Single(0x6400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.w.aqrl" = [
Single(0x6600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoand.w.rl" = [
Single(0x6200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.d" = [
Single(0xA000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.d.aq" = [
Single(0xA400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.d.aqrl" = [
Single(0xA600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.d.rl" = [
Single(0xA200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.w" = [
Single(0xA000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.w.aq" = [
Single(0xA400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.w.aqrl" = [
Single(0xA600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomax.w.rl" = [
Single(0xA200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.d" = [
Single(0xE000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.d.aq" = [
Single(0xE400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.d.aqrl" = [
Single(0xE600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.d.rl" = [
Single(0xE200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.w" = [
Single(0xE000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.w.aq" = [
Single(0xE400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.w.aqrl" = [
Single(0xE600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomaxu.w.rl" = [
Single(0xE200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.d" = [
Single(0x8000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.d.aq" = [
Single(0x8400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.d.aqrl" = [
Single(0x8600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.d.rl" = [
Single(0x8200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.w" = [
Single(0x8000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.w.aq" = [
Single(0x8400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.w.aqrl" = [
Single(0x8600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amomin.w.rl" = [
Single(0x8200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.d" = [
Single(0xC000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.d.aq" = [
Single(0xC400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.d.aqrl" = [
Single(0xC600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.d.rl" = [
Single(0xC200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.w" = [
Single(0xC000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.w.aq" = [
Single(0xC400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.w.aqrl" = [
Single(0xC600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amominu.w.rl" = [
Single(0xC200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.d" = [
Single(0x4000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.d.aq" = [
Single(0x4400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.d.aqrl" = [
Single(0x4600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.d.rl" = [
Single(0x4200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.w" = [
Single(0x4000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.w.aq" = [
Single(0x4400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.w.aqrl" = [
Single(0x4600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoor.w.rl" = [
Single(0x4200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.d" = [
Single(0x0800302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.d.aq" = [
Single(0x0C00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.d.aqrl" = [
Single(0x0E00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.d.rl" = [
Single(0x0A00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.w" = [
Single(0x0800202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.w.aq" = [
Single(0x0C00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.w.aqrl" = [
Single(0x0E00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoswap.w.rl" = [
Single(0x0A00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.d" = [
Single(0x2000302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.d.aq" = [
Single(0x2400302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.d.aqrl" = [
Single(0x2600302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.d.rl" = [
Single(0x2200302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.w" = [
Single(0x2000202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.w.aq" = [
Single(0x2400202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.w.aqrl" = [
Single(0x2600202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"amoxor.w.rl" = [
Single(0x2200202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"lr.d" = [
Single(0x1000302F), RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.d.aq" = [
Single(0x1400302F), RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.d.aqrl" = [
Single(0x1600302F), RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.d.rl" = [
Single(0x1200302F), RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.w" = [
Single(0x1000202F), RV32 | RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.w.aq" = [
Single(0x1400202F), RV32 | RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.w.aqrl" = [
Single(0x1600202F), RV32 | RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"lr.w.rl" = [
Single(0x1200202F), RV32 | RV64, [X, Ref] => [R(7), R(15)], [Ex_A];
],
"sc.d" = [
Single(0x1800302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.d.aq" = [
Single(0x1C00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.d.aqrl" = [
Single(0x1E00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.d.rl" = [
Single(0x1A00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.w" = [
Single(0x1800202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.w.aq" = [
Single(0x1C00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.w.aqrl" = [
Single(0x1E00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"sc.w.rl" = [
Single(0x1A00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_A];
],
"c.add" = [
Compressed(0x9002), RV32 | RV64, [X, X] => [Rno0(7), Rno0(2)], [Ex_C];
],
"c.addi" = [
Compressed(0x0001), RV32 | RV64, [X, Imm] => [Rno0(7), SImmNo0(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.addi16sp" = [
Compressed(0x6101), RV32 | RV64, [Reg(RegId::X2), Imm] => [SImmNo0(10, 4), BitRange(6, 1, 4), BitRange(5, 1, 6), BitRange(3, 2, 7), BitRange(2, 1, 5), BitRange(12, 1, 9), Next], [Ex_C];
],
"c.addi4spn" = [
Compressed(0x0000), RV32 | RV64, [X, Reg(RegId::X2), Imm] => [Rpop(2), UImmNo0(10, 2), BitRange(11, 2, 4), BitRange(7, 4, 6), BitRange(6, 1, 2), BitRange(5, 1, 3), Next], [Ex_C];
],
"c.addiw" = [
Compressed(0x2001), RV64, [X, Imm] => [Rno0(7), SImm(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.addw" = [
Compressed(0x9C21), RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_C];
],
"c.and" = [
Compressed(0x8C61), RV32 | RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_C];
],
"c.andi" = [
Compressed(0x8801), RV32 | RV64, [X, Imm] => [Rpop(7), SImm(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.beqz" = [
Compressed(0xC001), RV32 | RV64, [X, Offset] => [Rpop(7), Offset(BC)], [Ex_C];
],
"c.bnez" = [
Compressed(0xE001), RV32 | RV64, [X, Offset] => [Rpop(7), Offset(BC)], [Ex_C];
],
"c.ebreak" = [
Compressed(0x9002), RV32 | RV64, [] => [], [Ex_C];
],
"c.j" = [
Compressed(0xA001), RV32 | RV64, [Offset] => [Offset(JC)], [Ex_C];
],
"c.jal" = [
Compressed(0x2001), RV32 , [Offset] => [Offset(JC)], [Ex_C];
],
"c.jalr" = [
Compressed(0x9002), RV32 | RV64, [X] => [Rno0(7)], [Ex_C];
],
"c.jr" = [
Compressed(0x8002), RV32 | RV64, [X] => [Rno0(7)], [Ex_C];
],
"c.ld" = [
Compressed(0x6000), RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(8, 3), BitRange(5, 2, 6), BitRange(10, 3, 3), Next], [Ex_C];
],
"c.ldsp" = [
Compressed(0x6002), RV64, [X, RefSp] => [Rno0(7), UImm(9, 3), BitRange(5, 2, 3), BitRange(2, 3, 6), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.li" = [
Compressed(0x4001), RV32 | RV64, [X, Imm] => [Rno0(7), SImm(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.lui" = [
Compressed(0x6001), RV32 | RV64, [X, Imm] => [Rno02(7), SImmNo0(18, 12), BitRange(2, 5, 12), BitRange(12, 1, 17), Next], [Ex_C];
],
"c.lw" = [
Compressed(0x4000), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(7, 2), BitRange(6, 1, 2), BitRange(5, 1, 6), BitRange(10, 3, 3), Next], [Ex_C];
],
"c.lwsp" = [
Compressed(0x4002), RV32 | RV64, [X, RefSp] => [Rno0(7), UImm(8, 2), BitRange(4, 3, 2), BitRange(2, 2, 6), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.mv" = [
Compressed(0x8002), RV32 | RV64, [X, X] => [Rno0(7), Rno0(2)], [Ex_C];
],
"c.nop" = [
Compressed(0x0001), RV32 | RV64, [] => [], [Ex_C];
],
"c.or" = [
Compressed(0x8C41), RV32 | RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_C];
],
"c.sd" = [
Compressed(0xE000), RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(8, 3), BitRange(5, 2, 6), BitRange(10, 3, 3), Next], [Ex_C];
],
"c.sdsp" = [
Compressed(0xE002), RV64, [X, RefSp] => [R(2), UImm(9, 3), BitRange(10, 3, 3), BitRange(7, 3, 6), Next], [Ex_C];
],
"c.slli" = [
Compressed(0x0002), RV32 , [X, Imm] => [Rno0(7), UImmNo0(5, 0), BitRange(2, 5, 0), Next], [Ex_C];
Compressed(0x0002), RV64, [X, Imm] => [Rno0(7), UImmNo0(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.srai" = [
Compressed(0x8401), RV32 , [X, Imm] => [Rpop(7), UImmNo0(5, 0), BitRange(2, 5, 0), Next], [Ex_C];
Compressed(0x8401), RV64, [X, Imm] => [Rpop(7), UImmNo0(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.srli" = [
Compressed(0x8001), RV32 , [X, Imm] => [Rpop(7), UImmNo0(5, 0), BitRange(2, 5, 0), Next], [Ex_C];
Compressed(0x8001), RV64, [X, Imm] => [Rpop(7), UImmNo0(6, 0), BitRange(2, 5, 0), BitRange(12, 1, 5), Next], [Ex_C];
],
"c.sub" = [
Compressed(0x8C01), RV32 | RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_C];
],
"c.subw" = [
Compressed(0x9C01), RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_C];
],
"c.sw" = [
Compressed(0xC000), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(7, 2), BitRange(6, 1, 2), BitRange(5, 1, 6), BitRange(10, 3, 3), Next], [Ex_C];
],
"c.swsp" = [
Compressed(0xC002), RV32 | RV64, [X, RefSp] => [R(2), UImm(8, 2), BitRange(9, 4, 2), BitRange(7, 2, 6), Next], [Ex_C];
],
"c.unimp" = [
Compressed(0x0000), RV32 | RV64, [] => [], [Ex_C];
],
"c.xor" = [
Compressed(0x8C21), RV32 | RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_C];
],
"c.fld" = [
Compressed(0x2000), RV32 | RV64, [F, RefOffset] => [Rpop(2), Rpop(7), UImm(8, 3), BitRange(5, 2, 6), BitRange(10, 3, 3), Next], [Ex_C | Ex_D];
],
"c.fldsp" = [
Compressed(0x2002), RV32 | RV64, [F, RefSp] => [R(7), UImm(9, 3), BitRange(5, 2, 3), BitRange(2, 3, 6), BitRange(12, 1, 5), Next], [Ex_C | Ex_D];
],
"c.fsd" = [
Compressed(0xA000), RV32 | RV64, [F, RefOffset] => [Rpop(2), Rpop(7), UImm(8, 3), BitRange(5, 2, 6), BitRange(10, 3, 3), Next], [Ex_C | Ex_D];
],
"c.fsdsp" = [
Compressed(0xA002), RV32 | RV64, [F, RefSp] => [R(2), UImm(9, 3), BitRange(10, 3, 3), BitRange(7, 3, 6), Next], [Ex_C | Ex_D];
],
"c.flw" = [
Compressed(0x6000), RV32 , [F, RefOffset] => [Rpop(2), Rpop(7), UImm(7, 2), BitRange(6, 1, 2), BitRange(5, 1, 6), BitRange(10, 3, 3), Next], [Ex_C | Ex_F];
],
"c.flwsp" = [
Compressed(0x6002), RV32 , [F, RefSp] => [R(7), UImm(8, 2), BitRange(4, 3, 2), BitRange(2, 2, 6), BitRange(12, 1, 5), Next], [Ex_C | Ex_F];
],
"c.fsw" = [
Compressed(0xE000), RV32 , [F, RefOffset] => [Rpop(2), Rpop(7), UImm(7, 2), BitRange(6, 1, 2), BitRange(5, 1, 6), BitRange(10, 3, 3), Next], [Ex_C | Ex_F];
],
"c.fswsp" = [
Compressed(0xE002), RV32 , [F, RefSp] => [R(2), UImm(8, 2), BitRange(9, 4, 2), BitRange(7, 2, 6), Next], [Ex_C | Ex_F];
],
"c.sspopchk" = [
Compressed(0x6281), RV32 | RV64, [Reg(RegId::X5)] => [], [Ex_Zcmop | Ex_Zicfiss];
],
"c.sspush" = [
Compressed(0x6081), RV32 | RV64, [Reg(RegId::X1)] => [], [Ex_Zcmop | Ex_Zicfiss];
],
"c.ntl.all" = [
Compressed(0x9016), RV32 | RV64, [] => [], [Ex_C | Ex_Zihintntl];
],
"c.ntl.p1" = [
Compressed(0x900A), RV32 | RV64, [] => [], [Ex_C | Ex_Zihintntl];
],
"c.ntl.pall" = [
Compressed(0x900E), RV32 | RV64, [] => [], [Ex_C | Ex_Zihintntl];
],
"c.ntl.s1" = [
Compressed(0x9012), RV32 | RV64, [] => [], [Ex_C | Ex_Zihintntl];
],
"fabs.d" = [
Single(0x22002053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_D];
Single(0x22002053), RV32 , [X, X] => [Reven(7), Reven(15), Repeat, R(20)], [Ex_Zdinx];
Single(0x22002053), RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zdinx];
],
"fadd.d" = [
Single(0x02000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_D];
Single(0x02000053), RV32 , [X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x02000053), RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x02007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x02007053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x02007053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fclass.d" = [
Single(0xE2001053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_D];
Single(0xE2001053), RV32 , [X, X] => [R(7), Reven(15)], [Ex_Zdinx];
Single(0xE2001053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.d.l" = [
Single(0xD2200053), RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0xD2200053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xD2207053), RV64, [F, X] => [R(7), R(15)], [Ex_D];
Single(0xD2207053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.d.lu" = [
Single(0xD2300053), RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0xD2300053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xD2307053), RV64, [F, X] => [R(7), R(15)], [Ex_D];
Single(0xD2307053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.d.s" = [
Single(0x42000053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D];
Single(0x42000053), RV32 , [X, X] => [Reven(7), Reven(15)], [Ex_Zdinx];
Single(0x42000053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.d.w" = [
Single(0xD2000053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_D];
Single(0xD2000053), RV32 , [X, X] => [Reven(7), R(15)], [Ex_Zdinx];
Single(0xD2000053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.d.wu" = [
Single(0xD2100053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_D];
Single(0xD2100053), RV32 , [X, X] => [Reven(7), R(15)], [Ex_Zdinx];
Single(0xD2100053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.l.d" = [
Single(0xC2200053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0xC2200053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xC2207053), RV64, [X, F] => [R(7), R(15)], [Ex_D];
Single(0xC2207053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.lu.d" = [
Single(0xC2300053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0xC2300053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xC2307053), RV64, [X, F] => [R(7), R(15)], [Ex_D];
Single(0xC2307053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.s.d" = [
Single(0x40100053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0x40100053), RV32 , [X, X, Ident] => [Reven(7), Reven(15), RoundingMode(12)], [Ex_Zdinx];
Single(0x40100053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0x40107053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D];
Single(0x40107053), RV32 , [X, X] => [Reven(7), Reven(15)], [Ex_Zdinx];
Single(0x40107053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.w.d" = [
Single(0xC2000053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0xC2000053), RV32 , [X, X, Ident] => [R(7), Reven(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xC2000053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xC2007053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_D];
Single(0xC2007053), RV32 , [X, X] => [R(7), Reven(15)], [Ex_Zdinx];
Single(0xC2007053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fcvt.wu.d" = [
Single(0xC2100053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0xC2100053), RV32 , [X, X, Ident] => [R(7), Reven(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xC2100053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0xC2107053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_D];
Single(0xC2107053), RV32 , [X, X] => [R(7), Reven(15)], [Ex_Zdinx];
Single(0xC2107053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fdiv.d" = [
Single(0x1A000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_D];
Single(0x1A000053), RV32 , [X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x1A000053), RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x1A007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x1A007053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x1A007053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"feq.d" = [
Single(0xA2002053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0xA2002053), RV32 , [X, X, X] => [R(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0xA2002053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fld" = [
Single(0x00003007), RV32 | RV64, [F, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_D];
Single(0x00003007), RV32 | RV64, [F, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_D];
Double(0x00000017, 0x00003007), RV32 | RV64, [F, Offset, X] => [R(7+32), Offset(SPLIT32), Rno0(7), Repeat, R(15+32)], [Ex_D];
],
"fle.d" = [
Single(0xA2000053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0xA2000053), RV32 , [X, X, X] => [R(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0xA2000053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"flt.d" = [
Single(0xA2001053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0xA2001053), RV32 , [X, X, X] => [R(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0xA2001053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fmadd.d" = [
Single(0x02000043), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_D];
Single(0x02000043), RV32 , [X, X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), Reven(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x02000043), RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x02007043), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_D];
Single(0x02007043), RV32 , [X, X, X, X] => [Reven(7), Reven(15), Reven(20), Reven(27)], [Ex_Zdinx];
Single(0x02007043), RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zdinx];
],
"fmax.d" = [
Single(0x2A001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x2A001053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x2A001053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fmin.d" = [
Single(0x2A000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x2A000053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x2A000053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fmsub.d" = [
Single(0x02000047), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_D];
Single(0x02000047), RV32 , [X, X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), Reven(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x02000047), RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x02007047), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_D];
Single(0x02007047), RV32 , [X, X, X, X] => [Reven(7), Reven(15), Reven(20), Reven(27)], [Ex_Zdinx];
Single(0x02007047), RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zdinx];
],
"fmul.d" = [
Single(0x12000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_D];
Single(0x12000053), RV32 , [X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x12000053), RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x12007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x12007053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x12007053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fmv.d" = [
Single(0x22000053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_D];
Single(0x22000053), RV32 , [X, X] => [Reven(7), Reven(15), Repeat, R(20)], [Ex_Zdinx];
Single(0x22000053), RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zdinx];
],
"fmv.d.x" = [
Single(0xF2000053), RV64, [F, X] => [R(7), R(15)], [Ex_D];
],
"fmv.x.d" = [
Single(0xE2000053), RV64, [X, F] => [R(7), R(15)], [Ex_D];
],
"fneg.d" = [
Single(0x22001053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_D];
Single(0x22001053), RV32 , [X, X] => [Reven(7), Reven(15), Repeat, R(20)], [Ex_Zdinx];
Single(0x22001053), RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zdinx];
],
"fnmadd.d" = [
Single(0x0200004F), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_D];
Single(0x0200004F), RV32 , [X, X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), Reven(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x0200004F), RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x0200704F), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_D];
Single(0x0200704F), RV32 , [X, X, X, X] => [Reven(7), Reven(15), Reven(20), Reven(27)], [Ex_Zdinx];
Single(0x0200704F), RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zdinx];
],
"fnmsub.d" = [
Single(0x0200004B), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_D];
Single(0x0200004B), RV32 , [X, X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), Reven(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x0200004B), RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zdinx];
Single(0x0200704B), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_D];
Single(0x0200704B), RV32 , [X, X, X, X] => [Reven(7), Reven(15), Reven(20), Reven(27)], [Ex_Zdinx];
Single(0x0200704B), RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zdinx];
],
"fsd" = [
Single(0x00003027), RV32 | RV64, [F, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_D];
Single(0x00003027), RV32 | RV64, [F, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_D];
Double(0x00000017, 0x00003027), RV32 | RV64, [F, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_D];
],
"fsgnj.d" = [
Single(0x22000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x22000053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x22000053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fsgnjn.d" = [
Single(0x22001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x22001053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x22001053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fsgnjx.d" = [
Single(0x22002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x22002053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x22002053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fsqrt.d" = [
Single(0x5A000053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D];
Single(0x5A000053), RV32 , [X, X, Ident] => [Reven(7), Reven(15), RoundingMode(12)], [Ex_Zdinx];
Single(0x5A000053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx];
Single(0x5A007053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D];
Single(0x5A007053), RV32 , [X, X] => [Reven(7), Reven(15)], [Ex_Zdinx];
Single(0x5A007053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx];
],
"fsub.d" = [
Single(0x0A000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_D];
Single(0x0A000053), RV32 , [X, X, X, Ident] => [Reven(7), Reven(15), Reven(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x0A000053), RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zdinx];
Single(0x0A007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D];
Single(0x0A007053), RV32 , [X, X, X] => [Reven(7), Reven(15), Reven(20)], [Ex_Zdinx];
Single(0x0A007053), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zdinx];
],
"fcvtmod.w.d" = [
Single(0xC2801053), RV32 | RV64, [X, F, Lit(Literal::RTZ)] => [R(7), R(15)], [Ex_D | Ex_Zfa];
],
"fleq.d" = [
Single(0xA2004053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_D | Ex_Zfa];
],
"fli.d" = [
Single(0xF2100053), RV32 | RV64, [F, Imm] => [R(7), FloatingPointImmediate(15)], [Ex_D | Ex_Zfa];
],
"fltq.d" = [
Single(0xA2005053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_D | Ex_Zfa];
],
"fmaxm.d" = [
Single(0x2A003053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D | Ex_Zfa];
],
"fminm.d" = [
Single(0x2A002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_D | Ex_Zfa];
],
"fmvh.x.d" = [
Single(0xE2100053), RV32 , [X, F] => [R(7), R(15)], [Ex_D | Ex_Zfa];
],
"fmvp.d.x" = [
Single(0xB2000053), RV32 , [F, X, X] => [R(7), R(15), R(20)], [Ex_D | Ex_Zfa];
],
"fround.d" = [
Single(0x42400053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D | Ex_Zfa];
Single(0x42407053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D | Ex_Zfa];
],
"froundnx.d" = [
Single(0x42500053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D | Ex_Zfa];
Single(0x42507053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D | Ex_Zfa];
],
"fcvt.d.h" = [
Single(0x42200053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D | Ex_Zfh, Ex_D | Ex_Zfhmin];
Single(0x42200053), RV32 , [X, X] => [Reven(7), R(15)], [Ex_Zdinx | Ex_Zhinx, Ex_Zdinx | Ex_Zhinxmin];
Single(0x42200053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx | Ex_Zhinx, Ex_Zdinx | Ex_Zhinxmin];
],
"fcvt.h.d" = [
Single(0x44100053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_D | Ex_Zfh, Ex_D | Ex_Zfhmin];
Single(0x44100053), RV32 , [X, X, Ident] => [R(7), Reven(15), RoundingMode(12)], [Ex_Zdinx | Ex_Zhinx, Ex_Zdinx | Ex_Zhinxmin];
Single(0x44100053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zdinx | Ex_Zhinx, Ex_Zdinx | Ex_Zhinxmin];
Single(0x44107053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_D | Ex_Zfh, Ex_D | Ex_Zfhmin];
Single(0x44107053), RV32 , [X, X] => [R(7), Reven(15)], [Ex_Zdinx | Ex_Zhinx, Ex_Zdinx | Ex_Zhinxmin];
Single(0x44107053), RV64, [X, X] => [R(7), R(15)], [Ex_Zdinx | Ex_Zhinx, Ex_Zdinx | Ex_Zhinxmin];
],
"fabs.s" = [
Single(0x20002053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_F];
Single(0x20002053), RV32 | RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zfinx];
],
"fadd.s" = [
Single(0x00000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_F];
Single(0x00000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfinx];
Single(0x00007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x00007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fclass.s" = [
Single(0xE0001053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_F];
Single(0xE0001053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.l.s" = [
Single(0xC0200053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xC0200053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xC0207053), RV64, [X, F] => [R(7), R(15)], [Ex_F];
Single(0xC0207053), RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.lu.s" = [
Single(0xC0300053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xC0300053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xC0307053), RV64, [X, F] => [R(7), R(15)], [Ex_F];
Single(0xC0307053), RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.s.l" = [
Single(0xD0200053), RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xD0200053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xD0207053), RV64, [F, X] => [R(7), R(15)], [Ex_F];
Single(0xD0207053), RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.s.lu" = [
Single(0xD0300053), RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xD0300053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xD0307053), RV64, [F, X] => [R(7), R(15)], [Ex_F];
Single(0xD0307053), RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.s.w" = [
Single(0xD0000053), RV32 | RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xD0000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xD0007053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_F];
Single(0xD0007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.s.wu" = [
Single(0xD0100053), RV32 | RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xD0100053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xD0107053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_F];
Single(0xD0107053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.w.s" = [
Single(0xC0000053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xC0000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xC0007053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_F];
Single(0xC0007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fcvt.wu.s" = [
Single(0xC0100053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0xC0100053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0xC0107053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_F];
Single(0xC0107053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fdiv.s" = [
Single(0x18000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_F];
Single(0x18000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfinx];
Single(0x18007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x18007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"feq.s" = [
Single(0xA0002053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0xA0002053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fle.s" = [
Single(0xA0000053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0xA0000053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"flt.s" = [
Single(0xA0001053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0xA0001053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"flw" = [
Single(0x00002007), RV32 | RV64, [F, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_F];
Single(0x00002007), RV32 | RV64, [F, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_F];
Double(0x00000017, 0x00002007), RV32 | RV64, [F, Offset, X] => [R(7+32), Offset(SPLIT32), Rno0(7), Repeat, R(15+32)], [Ex_F];
],
"fmadd.s" = [
Single(0x00000043), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_F];
Single(0x00000043), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfinx];
Single(0x00007043), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_F];
Single(0x00007043), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zfinx];
],
"fmax.s" = [
Single(0x28001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x28001053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fmin.s" = [
Single(0x28000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x28000053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fmsub.s" = [
Single(0x00000047), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_F];
Single(0x00000047), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfinx];
Single(0x00007047), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_F];
Single(0x00007047), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zfinx];
],
"fmul.s" = [
Single(0x10000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_F];
Single(0x10000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfinx];
Single(0x10007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x10007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fmv.s" = [
Single(0x20000053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_F];
Single(0x20000053), RV32 | RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zfinx];
],
"fmv.s.x" = [
Single(0xF0000053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_F];
],
"fmv.w.x" = [
Single(0xF0000053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_F];
],
"fmv.x.s" = [
Single(0xE0000053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_F];
],
"fmv.x.w" = [
Single(0xE0000053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_F];
],
"fneg.s" = [
Single(0x20001053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_F];
Single(0x20001053), RV32 | RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zfinx];
],
"fnmadd.s" = [
Single(0x0000004F), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_F];
Single(0x0000004F), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfinx];
Single(0x0000704F), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_F];
Single(0x0000704F), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zfinx];
],
"fnmsub.s" = [
Single(0x0000004B), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_F];
Single(0x0000004B), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfinx];
Single(0x0000704B), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_F];
Single(0x0000704B), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zfinx];
],
"frcsr" = [
Single(0x00302073), RV32 | RV64, [X] => [R(7)], [Ex_F, Ex_Zfinx];
],
"frflags" = [
Single(0x00102073), RV32 | RV64, [X] => [R(7)], [Ex_F, Ex_Zfinx];
],
"frrm" = [
Single(0x00202073), RV32 | RV64, [X] => [R(7)], [Ex_F, Ex_Zfinx];
],
"fscsr" = [
Single(0x00301073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_F, Ex_Zfinx];
],
"fsflags" = [
Single(0x00101073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_F, Ex_Zfinx];
],
"fsflagsi" = [
Single(0x00105073), RV32 | RV64, [X, Imm] => [R(7), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_F, Ex_Zfinx];
],
"fsgnj.s" = [
Single(0x20000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x20000053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fsgnjn.s" = [
Single(0x20001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x20001053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fsgnjx.s" = [
Single(0x20002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x20002053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fsqrt.s" = [
Single(0x58000053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F];
Single(0x58000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfinx];
Single(0x58007053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_F];
Single(0x58007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zfinx];
],
"fsrm" = [
Single(0x00201073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_F, Ex_Zfinx];
],
"fsrmi" = [
Single(0x00205073), RV32 | RV64, [X, Imm] => [R(7), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_F, Ex_Zfinx];
],
"fsub.s" = [
Single(0x08000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_F];
Single(0x08000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfinx];
Single(0x08007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F];
Single(0x08007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zfinx];
],
"fsw" = [
Single(0x00002027), RV32 | RV64, [F, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_F];
Single(0x00002027), RV32 | RV64, [F, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_F];
Double(0x00000017, 0x00002027), RV32 | RV64, [F, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_F];
],
"fleq.s" = [
Single(0xA0004053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_F | Ex_Zfa];
],
"fli.s" = [
Single(0xF0100053), RV32 | RV64, [F, Imm] => [R(7), FloatingPointImmediate(15)], [Ex_F | Ex_Zfa];
],
"fltq.s" = [
Single(0xA0005053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_F | Ex_Zfa];
],
"fmaxm.s" = [
Single(0x28003053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F | Ex_Zfa];
],
"fminm.s" = [
Single(0x28002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_F | Ex_Zfa];
],
"fround.s" = [
Single(0x40400053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F | Ex_Zfa];
Single(0x40407053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_F | Ex_Zfa];
],
"froundnx.s" = [
Single(0x40500053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_F | Ex_Zfa];
Single(0x40507053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_F | Ex_Zfa];
],
"add" = [
Single(0x00000033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"addi" = [
Single(0x00000013), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00000013), RV32 | RV64, [X, X, Offset] => [R(7), R(15), Offset(LO12)], [Ex_I];
],
"addiw" = [
Single(0x0000001B), RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"addw" = [
Single(0x0000003B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"and" = [
Single(0x00007033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"andi" = [
Single(0x00007013), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"auipc" = [
Single(0x00000017), RV32 | RV64, [X, Offset] => [R(7), Offset(HI20)], [Ex_I];
],
"beq" = [
Single(0x00000063), RV32 | RV64, [X, X, Offset] => [R(15), R(20), Offset(B)], [Ex_I];
],
"beqz" = [
Single(0x00000063), RV32 | RV64, [X, Offset] => [R(15), Offset(B)], [Ex_I];
],
"bge" = [
Single(0x00005063), RV32 | RV64, [X, X, Offset] => [R(15), R(20), Offset(B)], [Ex_I];
],
"bgeu" = [
Single(0x00007063), RV32 | RV64, [X, X, Offset] => [R(15), R(20), Offset(B)], [Ex_I];
],
"bgez" = [
Single(0x00005063), RV32 | RV64, [X, Offset] => [R(15), Offset(B)], [Ex_I];
],
"bgt" = [
Single(0x00004063), RV32 | RV64, [X, X, Offset] => [R(20), R(15), Offset(B)], [Ex_I];
],
"bgtu" = [
Single(0x00006063), RV32 | RV64, [X, X, Offset] => [R(20), R(15), Offset(B)], [Ex_I];
],
"bgtz" = [
Single(0x00004063), RV32 | RV64, [X, Offset] => [R(20), Offset(B)], [Ex_I];
],
"ble" = [
Single(0x00005063), RV32 | RV64, [X, X, Offset] => [R(20), R(15), Offset(B)], [Ex_I];
],
"bleu" = [
Single(0x00007063), RV32 | RV64, [X, X, Offset] => [R(20), R(15), Offset(B)], [Ex_I];
],
"blez" = [
Single(0x00005063), RV32 | RV64, [X, Offset] => [R(20), Offset(B)], [Ex_I];
],
"blt" = [
Single(0x00004063), RV32 | RV64, [X, X, Offset] => [R(15), R(20), Offset(B)], [Ex_I];
],
"bltu" = [
Single(0x00006063), RV32 | RV64, [X, X, Offset] => [R(15), R(20), Offset(B)], [Ex_I];
],
"bltz" = [
Single(0x00004063), RV32 | RV64, [X, Offset] => [R(15), Offset(B)], [Ex_I];
],
"bne" = [
Single(0x00001063), RV32 | RV64, [X, X, Offset] => [R(15), R(20), Offset(B)], [Ex_I];
],
"bnez" = [
Single(0x00001063), RV32 | RV64, [X, Offset] => [R(15), Offset(B)], [Ex_I];
],
"call" = [
Double(0x00000097, 0x000080E7), RV32 | RV64, [Offset] => [Offset(SPLIT32)], [Ex_I];
Double(0x00000017, 0x00000067), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"ebreak" = [
Single(0x00100073), RV32 | RV64, [] => [], [Ex_I];
],
"ecall" = [
Single(0x00000073), RV32 | RV64, [] => [], [Ex_I];
],
"fence" = [
Single(0x0000000F), RV32 | RV64, [Ident, Ident] => [FenceSpec(24), FenceSpec(20)], [Ex_I];
Single(0x0FF0000F), RV32 | RV64, [] => [], [Ex_I];
],
"fence.tso" = [
Single(0x8330000F), RV32 | RV64, [] => [], [Ex_I];
],
"j" = [
Single(0x0000006F), RV32 | RV64, [Offset] => [Offset(J)], [Ex_I];
],
"jal" = [
Single(0x0000006F), RV32 | RV64, [X, Offset] => [R(7), Offset(J)], [Ex_I];
Single(0x000000EF), RV32 | RV64, [Offset] => [Offset(J)], [Ex_I];
],
"jalr" = [
Single(0x00000067), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00000067), RV32 | RV64, [X, X, Offset] => [R(7), R(15), Offset(LO12)], [Ex_I];
Single(0x000000E7), RV32 | RV64, [X] => [R(15)], [Ex_I];
],
"jump" = [
Double(0x00000017, 0x00000067), RV32 | RV64, [Offset, X] => [Offset(SPLIT32), Rno0(7), Repeat, R(15+32)], [Ex_I];
],
"jr" = [
Single(0x00000067), RV32 | RV64, [X] => [R(15)], [Ex_I];
],
"la" = [
Double(0x00000017, 0x00000013), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"lb" = [
Single(0x00000003), RV32 | RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00000003), RV32 | RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00000003), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"lbu" = [
Single(0x00004003), RV32 | RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00004003), RV32 | RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00004003), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"ld" = [
Single(0x00003003), RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00003003), RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00003003), RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"lh" = [
Single(0x00001003), RV32 | RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00001003), RV32 | RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00001003), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"lhu" = [
Single(0x00005003), RV32 | RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00005003), RV32 | RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00005003), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"li" = [
Double(0x00000037, 0x00000013), RV32 , [X, Imm] => [
R(7),
Repeat, R(7+32), Repeat, R(15+32),
SImm(32, 0),
RBitRange(12, 20, 12),
BitRange(20+32, 12, 0),
Next
], [Ex_I];
Many(&[0x00000037, 0x0000001B, 0x00B01013, 0x00000013, 0x00B01013, 0x00000013, 0x00A01013, 0x00000013]), RV64, [X, Imm] => [
R(7),
Repeat, R(7+32), Repeat, R(15+32),
Repeat, R(7+64), Repeat, R(15+64),
Repeat, R(7+96), Repeat, R(15+96),
Repeat, R(7+128), Repeat, R(15+128),
Repeat, R(7+160), Repeat, R(15+160),
Repeat, R(7+192), Repeat, R(15+192),
Repeat, R(7+224), Repeat, R(15+224),
BigImm(64),
RBitRange(12, 20, 44),
BitRange(20+32, 12, 32),
BitRange(20+96, 11, 21),
BitRange(20+160, 11, 10),
BitRange(20+224, 10, 0),
Next
], [Ex_I];
],
"li.32" = [
Double(0x00000037, 0x0000001B), RV64, [X, Imm] => [
R(7),
Repeat, R(7+32), Repeat, R(15+32),
SImm(32, 0),
RBitRange(12, 20, 12),
BitRange(20+32, 12, 0),
Next
], [Ex_I];
],
"li.12" = [
Single(0x00000013), RV32 | RV64, [X, Imm] => [R(7), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"li.43" = [
Many(&[0x00000037, 0x0000001B, 0x00B01013, 0x00000013]), RV64, [X, Imm] => [
R(7),
Repeat, R(7+32), Repeat, R(15+32),
Repeat, R(7+64), Repeat, R(15+64),
Repeat, R(7+96), Repeat, R(15+96),
BigImm(43),
RBitRange(12, 20, 23),
BitRange(20+32, 12, 11),
BitRange(20+96, 11, 0),
Next
], [Ex_I];
],
"li.54" = [
Many(&[0x00000037, 0x0000001B, 0x00B01013, 0x00000013, 0x00B01013, 0x00000013]), RV64, [X, Imm] => [
R(7),
Repeat, R(7+32), Repeat, R(15+32),
Repeat, R(7+64), Repeat, R(15+64),
Repeat, R(7+96), Repeat, R(15+96),
Repeat, R(7+128), Repeat, R(15+128),
Repeat, R(7+160), Repeat, R(15+160),
BigImm(54),
RBitRange(12, 20, 34),
BitRange(20+32, 12, 22),
BitRange(20+96, 11, 11),
BitRange(20+160, 11, 0),
Next
], [Ex_I];
],
"lui" = [
Single(0x00000037), RV32 | RV64, [X, Imm] => [R(7), SImm(32, 12), BitRange(12, 20, 12), Next], [Ex_I];
],
"lw" = [
Single(0x00002003), RV32 | RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00002003), RV32 | RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00002003), RV32 | RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"lwu" = [
Single(0x00006003), RV64, [X, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
Single(0x00006003), RV64, [X, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_I];
Double(0x00000017, 0x00006003), RV64, [X, Offset] => [Rno0(7), Repeat, R(7+32), Repeat, R(15+32), Offset(SPLIT32)], [Ex_I];
],
"mv" = [
Single(0x00000013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_I];
],
"neg" = [
Single(0x40000033), RV32 | RV64, [X, X] => [R(7), R(20)], [Ex_I];
],
"negw" = [
Single(0x4000003B), RV64, [X, X] => [R(7), R(20)], [Ex_I];
],
"nop" = [
Single(0x00000013), RV32 | RV64, [] => [], [Ex_I];
],
"not" = [
Single(0xFFF04013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_I];
],
"or" = [
Single(0x00006033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"ori" = [
Single(0x00006013), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"pause" = [
Single(0x0100000F), RV32 | RV64, [] => [], [Ex_Zihintpause];
],
"ret" = [
Single(0x00008067), RV32 | RV64, [] => [], [Ex_I];
],
"sb" = [
Single(0x00000023), RV32 | RV64, [X, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_I];
Single(0x00000023), RV32 | RV64, [X, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_I];
Double(0x00000017, 0x00000023), RV32 | RV64, [X, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_I];
],
"sbreak" = [
Single(0x00100073), RV32 | RV64, [] => [], [Ex_I];
],
"scall" = [
Single(0x00000073), RV32 | RV64, [] => [], [Ex_I];
],
"sd" = [
Single(0x00003023), RV64, [X, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_I];
Single(0x00003023), RV64, [X, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_I];
Double(0x00000017, 0x00003023), RV64, [X, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_I];
],
"seqz" = [
Single(0x00103013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_I];
],
"sext.w" = [
Single(0x0000001B), RV64, [X, X] => [R(7), R(15)], [Ex_I];
],
"sgtz" = [
Single(0x00002033), RV32 | RV64, [X, X] => [R(7), R(20)], [Ex_I];
],
"sh" = [
Single(0x00001023), RV32 | RV64, [X, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_I];
Single(0x00001023), RV32 | RV64, [X, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_I];
Double(0x00000017, 0x00001023), RV32 | RV64, [X, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_I];
],
"sll" = [
Single(0x00001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"slli" = [
Single(0x00001013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_I];
Single(0x00001013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_I];
],
"slliw" = [
Single(0x0000101B), RV64, [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_I];
],
"sllw" = [
Single(0x0000103B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"slt" = [
Single(0x00002033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"slti" = [
Single(0x00002013), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"sltiu" = [
Single(0x00003013), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"sltu" = [
Single(0x00003033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"sltz" = [
Single(0x00002033), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_I];
],
"snez" = [
Single(0x00003033), RV32 | RV64, [X, X] => [R(7), R(20)], [Ex_I];
],
"sra" = [
Single(0x40005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"srai" = [
Single(0x40005013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_I];
Single(0x40005013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_I];
],
"sraiw" = [
Single(0x4000501B), RV64, [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_I];
],
"sraw" = [
Single(0x4000503B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"srl" = [
Single(0x00005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"srli" = [
Single(0x00005013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_I];
Single(0x00005013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_I];
],
"srliw" = [
Single(0x0000501B), RV64, [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_I];
],
"srlw" = [
Single(0x0000503B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"sub" = [
Single(0x40000033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"subw" = [
Single(0x4000003B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"sw" = [
Single(0x00002023), RV32 | RV64, [X, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_I];
Single(0x00002023), RV32 | RV64, [X, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_I];
Double(0x00000017, 0x00002023), RV32 | RV64, [X, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_I];
],
"tail" = [
Double(0x00000397, 0x00038067), RV32 | RV64, [Offset] => [Offset(SPLIT32)], [Ex_Zicfilp];
Double(0x00000317, 0x00030067), RV32 | RV64, [Offset] => [Offset(SPLIT32)], [Ex_I];
],
"unimp" = [
Single(0xC0001073), RV32 | RV64, [] => [], [Ex_I];
],
"xor" = [
Single(0x00004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_I];
],
"xori" = [
Single(0x00004013), RV32 | RV64, [X, X, Imm] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_I];
],
"zext.b" = [
Single(0x0FF07013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_I];
],
"div" = [
Single(0x02004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"divu" = [
Single(0x02005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"divuw" = [
Single(0x0200503B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"divw" = [
Single(0x0200403B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"mul" = [
Single(0x02000033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"mulh" = [
Single(0x02001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"mulhsu" = [
Single(0x02002033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"mulhu" = [
Single(0x02003033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"mulw" = [
Single(0x0200003B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"rem" = [
Single(0x02006033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"remu" = [
Single(0x02007033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"remuw" = [
Single(0x0200703B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"remw" = [
Single(0x0200603B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_M];
],
"fabs.q" = [
Single(0x26002053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_Q];
],
"fadd.q" = [
Single(0x06000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Q];
Single(0x06007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fclass.q" = [
Single(0xE6001053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.d.q" = [
Single(0x42300053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0x42307053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.l.q" = [
Single(0xC6200053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0xC6207053), RV64, [X, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.lu.q" = [
Single(0xC6300053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0xC6307053), RV64, [X, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.q.d" = [
Single(0x46100053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.q.l" = [
Single(0xD6200053), RV64, [F, X] => [R(7), R(15)], [Ex_Q];
],
"fcvt.q.lu" = [
Single(0xD6300053), RV64, [F, X] => [R(7), R(15)], [Ex_Q];
],
"fcvt.q.s" = [
Single(0x46000053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.q.w" = [
Single(0xD6000053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_Q];
],
"fcvt.q.wu" = [
Single(0xD6100053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_Q];
],
"fcvt.s.q" = [
Single(0x40300053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0x40307053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.w.q" = [
Single(0xC6000053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0xC6007053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Q];
],
"fcvt.wu.q" = [
Single(0xC6100053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0xC6107053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Q];
],
"fdiv.q" = [
Single(0x1E000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Q];
Single(0x1E007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"feq.q" = [
Single(0xA6002053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fle.q" = [
Single(0xA6000053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"flq" = [
Single(0x00004007), RV32 | RV64, [F, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_Q];
Single(0x00004007), RV32 | RV64, [F, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_Q];
Double(0x00000017, 0x00004007), RV32 | RV64, [F, Offset, X] => [R(7+32), Offset(SPLIT32), Rno0(7), Repeat, R(15+32)], [Ex_Q];
],
"flt.q" = [
Single(0xA6001053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fmadd.q" = [
Single(0x06000043), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Q];
Single(0x06007043), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Q];
],
"fmax.q" = [
Single(0x2E001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fmin.q" = [
Single(0x2E000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fmsub.q" = [
Single(0x06000047), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Q];
Single(0x06007047), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Q];
],
"fmul.q" = [
Single(0x16000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Q];
Single(0x16007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fmv.q" = [
Single(0x26000053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_Q];
],
"fneg.q" = [
Single(0x26001053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_Q];
],
"fnmadd.q" = [
Single(0x0600004F), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Q];
Single(0x0600704F), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Q];
],
"fnmsub.q" = [
Single(0x0600004B), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Q];
Single(0x0600704B), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Q];
],
"fsgnj.q" = [
Single(0x26000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fsgnjn.q" = [
Single(0x26001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fsgnjx.q" = [
Single(0x26002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fsq" = [
Single(0x00004027), RV32 | RV64, [F, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_Q];
Single(0x00004027), RV32 | RV64, [F, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_Q];
Double(0x00000017, 0x00004027), RV32 | RV64, [F, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_Q];
],
"fsqrt.q" = [
Single(0x5E000053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q];
Single(0x5E007053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q];
],
"fsub.q" = [
Single(0x0E000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Q];
Single(0x0E007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q];
],
"fleq.q" = [
Single(0xA6004053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Q | Ex_Zfa];
],
"fli.q" = [
Single(0xF6100053), RV32 | RV64, [F, Imm] => [R(7), FloatingPointImmediate(15)], [Ex_Q | Ex_Zfa];
],
"fltq.q" = [
Single(0xA6005053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Q | Ex_Zfa];
],
"fmaxm.q" = [
Single(0x2E003053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q | Ex_Zfa];
],
"fminm.q" = [
Single(0x2E002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Q | Ex_Zfa];
],
"fmvh.x.q" = [
Single(0xE6100053), RV64, [X, F] => [R(7), R(15)], [Ex_Q | Ex_Zfa];
],
"fmvp.q.x" = [
Single(0xB6000053), RV64, [F, X, X] => [R(7), R(15), R(20)], [Ex_Q | Ex_Zfa];
],
"fround.q" = [
Single(0x46400053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q | Ex_Zfa];
Single(0x46407053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q | Ex_Zfa];
],
"froundnx.q" = [
Single(0x46500053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q | Ex_Zfa];
Single(0x46507053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q | Ex_Zfa];
],
"fcvt.h.q" = [
Single(0x44300053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Q | Ex_Zfh, Ex_Q | Ex_Zfhmin];
Single(0x44307053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q | Ex_Zfh, Ex_Q | Ex_Zfhmin];
],
"fcvt.q.h" = [
Single(0x46200053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Q | Ex_Zfh, Ex_Q | Ex_Zfhmin];
],
"amoadd.b" = [
Single(0x0000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.b.aq" = [
Single(0x0400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.b.aqrl" = [
Single(0x0600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.b.rl" = [
Single(0x0200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.h" = [
Single(0x0000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.h.aq" = [
Single(0x0400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.h.aqrl" = [
Single(0x0600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoadd.h.rl" = [
Single(0x0200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.b" = [
Single(0x6000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.b.aq" = [
Single(0x6400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.b.aqrl" = [
Single(0x6600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.b.rl" = [
Single(0x6200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.h" = [
Single(0x6000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.h.aq" = [
Single(0x6400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.h.aqrl" = [
Single(0x6600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoand.h.rl" = [
Single(0x6200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.b" = [
Single(0xA000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.b.aq" = [
Single(0xA400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.b.aqrl" = [
Single(0xA600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.b.rl" = [
Single(0xA200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.h" = [
Single(0xA000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.h.aq" = [
Single(0xA400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.h.aqrl" = [
Single(0xA600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomax.h.rl" = [
Single(0xA200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.b" = [
Single(0xE000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.b.aq" = [
Single(0xE400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.b.aqrl" = [
Single(0xE600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.b.rl" = [
Single(0xE200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.h" = [
Single(0xE000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.h.aq" = [
Single(0xE400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.h.aqrl" = [
Single(0xE600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomaxu.h.rl" = [
Single(0xE200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.b" = [
Single(0x8000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.b.aq" = [
Single(0x8400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.b.aqrl" = [
Single(0x8600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.b.rl" = [
Single(0x8200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.h" = [
Single(0x8000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.h.aq" = [
Single(0x8400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.h.aqrl" = [
Single(0x8600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amomin.h.rl" = [
Single(0x8200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.b" = [
Single(0xC000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.b.aq" = [
Single(0xC400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.b.aqrl" = [
Single(0xC600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.b.rl" = [
Single(0xC200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.h" = [
Single(0xC000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.h.aq" = [
Single(0xC400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.h.aqrl" = [
Single(0xC600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amominu.h.rl" = [
Single(0xC200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.b" = [
Single(0x4000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.b.aq" = [
Single(0x4400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.b.aqrl" = [
Single(0x4600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.b.rl" = [
Single(0x4200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.h" = [
Single(0x4000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.h.aq" = [
Single(0x4400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.h.aqrl" = [
Single(0x4600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoor.h.rl" = [
Single(0x4200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.b" = [
Single(0x0800002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.b.aq" = [
Single(0x0C00002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.b.aqrl" = [
Single(0x0E00002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.b.rl" = [
Single(0x0A00002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.h" = [
Single(0x0800102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.h.aq" = [
Single(0x0C00102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.h.aqrl" = [
Single(0x0E00102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoswap.h.rl" = [
Single(0x0A00102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.b" = [
Single(0x2000002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.b.aq" = [
Single(0x2400002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.b.aqrl" = [
Single(0x2600002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.b.rl" = [
Single(0x2200002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.h" = [
Single(0x2000102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.h.aq" = [
Single(0x2400102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.h.aqrl" = [
Single(0x2600102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amoxor.h.rl" = [
Single(0x2200102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha];
],
"amocas.b" = [
Single(0x2800002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.b.aq" = [
Single(0x2C00002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.b.aqrl" = [
Single(0x2E00002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.b.rl" = [
Single(0x2A00002F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.h" = [
Single(0x2800102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.h.rl" = [
Single(0x2A00102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.h.aq" = [
Single(0x2C00102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.h.aqrl" = [
Single(0x2E00102F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zabha | Ex_Zacas];
],
"amocas.d" = [
Single(0x2800302F), RV32 , [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
Single(0x2800302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.d.aq" = [
Single(0x2C00302F), RV32 , [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
Single(0x2C00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.d.aqrl" = [
Single(0x2E00302F), RV32 , [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
Single(0x2E00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.d.rl" = [
Single(0x2A00302F), RV32 , [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
Single(0x2A00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.q" = [
Single(0x2800402F), RV64, [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
],
"amocas.q.aq" = [
Single(0x2C00402F), RV64, [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
],
"amocas.q.aqrl" = [
Single(0x2E00402F), RV64, [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
],
"amocas.q.rl" = [
Single(0x2A00402F), RV64, [X, X, Ref] => [Reven(7), Reven(20), R(15)], [Ex_Zacas];
],
"amocas.w" = [
Single(0x2800202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.w.aq" = [
Single(0x2C00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.w.aqrl" = [
Single(0x2E00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"amocas.w.rl" = [
Single(0x2A00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zacas];
],
"wrs.nto" = [
Single(0x00D00073), RV32 | RV64, [] => [], [Ex_Zawrs];
],
"wrs.sto" = [
Single(0x01D00073), RV32 | RV64, [] => [], [Ex_Zawrs];
],
"add.uw" = [
Single(0x0800003B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"sh1add" = [
Single(0x20002033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"sh1add.uw" = [
Single(0x2000203B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"sh2add" = [
Single(0x20004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"sh2add.uw" = [
Single(0x2000403B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"sh3add" = [
Single(0x20006033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"sh3add.uw" = [
Single(0x2000603B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zba];
],
"slli.uw" = [
Single(0x0800101B), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_Zba];
],
"zext.w" = [
Single(0x0800003B), RV64, [X, X] => [R(7), R(15)], [Ex_Zba];
Double(0x02001013, 0x02005013), RV64, [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
],
"clz" = [
Single(0x60001013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"clzw" = [
Single(0x6000101B), RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"cpop" = [
Single(0x60201013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"cpopw" = [
Single(0x6020101B), RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"ctz" = [
Single(0x60101013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"ctzw" = [
Single(0x6010101B), RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"max" = [
Single(0x0A006033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb];
],
"maxu" = [
Single(0x0A007033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb];
],
"min" = [
Single(0x0A004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb];
],
"minu" = [
Single(0x0A005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb];
],
"orc.b" = [
Single(0x28705013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
],
"sext.b" = [
Single(0x60401013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
Double(0x01801013, 0x41805013), RV32 , [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
Double(0x03801013, 0x43805013), RV64, [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
],
"sext.h" = [
Single(0x60501013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
Double(0x01001013, 0x41005013), RV32 , [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
Double(0x03001013, 0x43005013), RV64, [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
],
"zext.h" = [
Single(0x08004033), RV32 , [X, X] => [R(7), R(15)], [Ex_Zbb];
Single(0x0800403B), RV64, [X, X] => [R(7), R(15)], [Ex_Zbb];
Double(0x01001013, 0x01005013), RV32 , [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
Double(0x03001013, 0x03005013), RV64, [X, X] => [R(7), Repeat, R(7+32), Repeat, R(15+32), R(15)], [Ex_I];
],
"andn" = [
Single(0x40007033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"orn" = [
Single(0x40006033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"rev8" = [
Single(0x69805013), RV32 , [X, X] => [R(7), R(15)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
Single(0x6B805013), RV64, [X, X] => [R(7), R(15)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"rol" = [
Single(0x60001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"rolw" = [
Single(0x6000103B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"ror" = [
Single(0x60005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"rori" = [
Single(0x60005013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
Single(0x60005013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"roriw" = [
Single(0x6000501B), RV64, [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"rorw" = [
Single(0x6000503B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"xnor" = [
Single(0x40004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbb, Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"clmulr" = [
Single(0x0A002033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbc];
],
"clmul" = [
Single(0x0A001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbc, Ex_Zbkc, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"clmulh" = [
Single(0x0A003033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbc, Ex_Zbkc, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"brev8" = [
Single(0x68705013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"pack" = [
Single(0x08004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"packh" = [
Single(0x08007033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"packw" = [
Single(0x0800403B), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"unzip" = [
Single(0x08F05013), RV32 , [X, X] => [R(7), R(15)], [Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"zip" = [
Single(0x08F01013), RV32 , [X, X] => [R(7), R(15)], [Ex_Zbkb, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"xperm4" = [
Single(0x28002033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbkx, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"xperm8" = [
Single(0x28004033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbkx, Ex_Zk, Ex_Zkn, Ex_Zks];
],
"bclr" = [
Single(0x48001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbs];
],
"bclri" = [
Single(0x48001013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_Zbs];
Single(0x48001013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_Zbs];
],
"bext" = [
Single(0x48005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbs];
],
"bexti" = [
Single(0x48005013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_Zbs];
Single(0x48005013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_Zbs];
],
"binv" = [
Single(0x68001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbs];
],
"binvi" = [
Single(0x68001013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_Zbs];
Single(0x68001013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_Zbs];
],
"bset" = [
Single(0x28001033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zbs];
],
"bseti" = [
Single(0x28001013), RV32 , [X, X, Imm] => [R(7), R(15), UImm(5, 0), BitRange(20, 5, 0), Next], [Ex_Zbs];
Single(0x28001013), RV64, [X, X, Imm] => [R(7), R(15), UImm(6, 0), BitRange(20, 6, 0), Next], [Ex_Zbs];
],
"c.lbu" = [
Compressed(0x8000), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(2, 0), BitRange(6, 1, 0), BitRange(5, 1, 1), Next], [Ex_Zcb];
],
"c.lh" = [
Compressed(0x8440), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(2, 1), BitRange(5, 1, 1), Next], [Ex_Zcb];
],
"c.lhu" = [
Compressed(0x8400), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(2, 1), BitRange(5, 1, 1), Next], [Ex_Zcb];
],
"c.not" = [
Compressed(0x9C75), RV32 | RV64, [X] => [Rpop(7)], [Ex_Zcb];
],
"c.sb" = [
Compressed(0x8800), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(2, 0), BitRange(6, 1, 0), BitRange(5, 1, 1), Next], [Ex_Zcb];
],
"c.sh" = [
Compressed(0x8C00), RV32 | RV64, [X, RefOffset] => [Rpop(2), Rpop(7), UImm(2, 1), BitRange(5, 1, 1), Next], [Ex_Zbb | Ex_Zcb];
],
"c.zext.b" = [
Compressed(0x9C61), RV32 | RV64, [X] => [Rpop(7)], [Ex_Zcb];
],
"c.sext.b" = [
Compressed(0x9C65), RV32 | RV64, [X] => [Rpop(7)], [Ex_Zbb | Ex_Zcb];
],
"c.sext.h" = [
Compressed(0x9C6D), RV32 | RV64, [X] => [Rpop(7)], [Ex_Zbb | Ex_Zcb];
],
"c.sext.w" = [
Compressed(0x2001), RV64, [X] => [Rno0(7)], [Ex_Zbb | Ex_Zcb];
],
"c.zext.h" = [
Compressed(0x9C69), RV32 | RV64, [X] => [Rpop(7)], [Ex_Zbb | Ex_Zcb];
],
"c.zext.w" = [
Compressed(0x9C71), RV64, [X] => [Rpop(7)], [Ex_Zba | Ex_Zcb];
],
"c.mul" = [
Compressed(0x9C41), RV32 | RV64, [X, X] => [Rpop(7), Rpop(2)], [Ex_Zcb | Ex_M];
],
"c.mop.1" = [
Compressed(0x6081), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.11" = [
Compressed(0x6581), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.13" = [
Compressed(0x6681), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.15" = [
Compressed(0x6781), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.3" = [
Compressed(0x6181), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.5" = [
Compressed(0x6281), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.7" = [
Compressed(0x6381), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.9" = [
Compressed(0x6481), RV32 | RV64, [] => [], [Ex_Zcmop];
],
"c.mop.N" = [
Compressed(0x6081), RV32 | RV64, [Imm] => [UImmOdd(4, 1), BitRange(8, 3, 1), Next], [Ex_Zcmop];
],
"cm.mva01s" = [
Compressed(0xAC62), RV32 | RV64, [X, X] => [Rpops(7), Rpops(2)], [Ex_Zcmp];
],
"cm.mvsa01" = [
Compressed(0xAC22), RV32 | RV64, [X, X] => [Rpops(7), Rpops2(2)], [Ex_Zcmp];
],
"cm.pop" = [
Compressed(0xBA02), RV32 | RV64, [Xlist, Imm] => [Rlist(4), SPImm(2, false)], [Ex_Zcmp];
],
"cm.popret" = [
Compressed(0xBE02), RV32 | RV64, [Xlist, Imm] => [Rlist(4), SPImm(2, false)], [Ex_Zcmp];
],
"cm.popretz" = [
Compressed(0xBC02), RV32 | RV64, [Xlist, Imm] => [Rlist(4), SPImm(2, false)], [Ex_Zcmp];
],
"cm.push" = [
Compressed(0xB802), RV32 | RV64, [Xlist, Imm] => [Rlist(4), SPImm(2, true)], [Ex_Zcmp];
],
"cm.jalt" = [
Compressed(0xA002), RV32 | RV64, [Imm] => [UImmRange(32, 255), BitRange(2, 8, 0), Next], [Ex_Zcmt];
],
"cm.jt" = [
Compressed(0xA002), RV32 | RV64, [Imm] => [UImmRange(0, 31), BitRange(2, 8, 0), Next], [Ex_Zcmt];
],
"fleq.h" = [
Single(0xA4004053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Zfa | Ex_Zfh];
],
"fli.h" = [
Single(0xF4100053), RV32 | RV64, [F, Imm] => [R(7), FloatingPointImmediate(15)], [Ex_Zfa | Ex_Zfh];
],
"fltq.h" = [
Single(0xA4005053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Zfa | Ex_Zfh];
],
"fmaxm.h" = [
Single(0x2C003053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfa | Ex_Zfh];
],
"fminm.h" = [
Single(0x2C002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfa | Ex_Zfh];
],
"fround.h" = [
Single(0x44400053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfa | Ex_Zfh];
Single(0x44407053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfa | Ex_Zfh];
],
"froundnx.h" = [
Single(0x44500053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfa | Ex_Zfh];
Single(0x44507053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfa | Ex_Zfh];
],
"fcvt.bf16.s" = [
Single(0x44800053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfbfmin];
Single(0x44807053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfbfmin];
],
"fcvt.s.bf16" = [
Single(0x40600053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfbfmin];
],
"fabs.h" = [
Single(0x24002053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_Zfh];
Single(0x24002053), RV32 | RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zhinx];
],
"fadd.h" = [
Single(0x04000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfh];
Single(0x04000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zhinx];
Single(0x04007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x04007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fclass.h" = [
Single(0xE4001053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Zfh];
Single(0xE4001053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.h.l" = [
Single(0xD4200053), RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xD4200053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xD4207053), RV64, [F, X] => [R(7), R(15)], [Ex_Zfh];
Single(0xD4207053), RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.h.lu" = [
Single(0xD4300053), RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xD4300053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xD4307053), RV64, [F, X] => [R(7), R(15)], [Ex_Zfh];
Single(0xD4307053), RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.h.s" = [
Single(0x44000053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh, Ex_Zfhmin];
Single(0x44000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx, Ex_Zhinxmin];
Single(0x44007053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfh, Ex_Zfhmin];
Single(0x44007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx, Ex_Zhinxmin];
],
"fcvt.h.w" = [
Single(0xD4000053), RV32 | RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xD4000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xD4007053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_Zfh];
Single(0xD4007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.h.wu" = [
Single(0xD4100053), RV32 | RV64, [F, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xD4100053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xD4107053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_Zfh];
Single(0xD4107053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.l.h" = [
Single(0xC4200053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xC4200053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xC4207053), RV64, [X, F] => [R(7), R(15)], [Ex_Zfh];
Single(0xC4207053), RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.lu.h" = [
Single(0xC4300053), RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xC4300053), RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xC4307053), RV64, [X, F] => [R(7), R(15)], [Ex_Zfh];
Single(0xC4307053), RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.s.h" = [
Single(0x40200053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfh, Ex_Zfhmin];
Single(0x40200053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx, Ex_Zhinxmin];
],
"fcvt.w.h" = [
Single(0xC4000053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xC4000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xC4007053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Zfh];
Single(0xC4007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fcvt.wu.h" = [
Single(0xC4100053), RV32 | RV64, [X, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0xC4100053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0xC4107053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Zfh];
Single(0xC4107053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fdiv.h" = [
Single(0x1C000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfh];
Single(0x1C000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zhinx];
Single(0x1C007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x1C007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"feq.h" = [
Single(0xA4002053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0xA4002053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fle.h" = [
Single(0xA4000053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0xA4000053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"flh" = [
Single(0x00001007), RV32 | RV64, [F, RefOffset] => [R(7), R(15), SImm(12, 0), BitRange(20, 12, 0), Next], [Ex_Zfh, Ex_Zfhmin];
Single(0x00001007), RV32 | RV64, [F, RefLabel] => [R(7), R(15), Offset(LO12)], [Ex_Zfh, Ex_Zfhmin];
Double(0x00000017, 0x00001007), RV32 | RV64, [F, Offset, X] => [R(7+32), Offset(SPLIT32), Rno0(7), Repeat, R(15+32)], [Ex_Zfh, Ex_Zfhmin];
],
"flt.h" = [
Single(0xA4001053), RV32 | RV64, [X, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0xA4001053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fmadd.h" = [
Single(0x04000043), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfh];
Single(0x04000043), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zhinx];
Single(0x04007043), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Zfh];
Single(0x04007043), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zhinx];
],
"fmax.h" = [
Single(0x2C001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x2C001053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fmin.h" = [
Single(0x2C000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x2C000053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fmsub.h" = [
Single(0x04000047), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfh];
Single(0x04000047), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zhinx];
Single(0x04007047), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Zfh];
Single(0x04007047), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zhinx];
],
"fmul.h" = [
Single(0x14000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfh];
Single(0x14000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zhinx];
Single(0x14007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x14007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fmv.h" = [
Single(0x24000053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_Zfh];
Single(0x24000053), RV32 | RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zhinx];
],
"fmv.h.x" = [
Single(0xF4000053), RV32 | RV64, [F, X] => [R(7), R(15)], [Ex_Zfh, Ex_Zfhmin];
],
"fmv.x.h" = [
Single(0xE4000053), RV32 | RV64, [X, F] => [R(7), R(15)], [Ex_Zfh, Ex_Zfhmin];
],
"fneg.h" = [
Single(0x24001053), RV32 | RV64, [F, F] => [R(7), R(15), Repeat, R(20)], [Ex_Zfh];
Single(0x24001053), RV32 | RV64, [X, X] => [R(7), R(15), Repeat, R(20)], [Ex_Zhinx];
],
"fnmadd.h" = [
Single(0x0400004F), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfh];
Single(0x0400004F), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zhinx];
Single(0x0400704F), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Zfh];
Single(0x0400704F), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zhinx];
],
"fnmsub.h" = [
Single(0x0400004B), RV32 | RV64, [F, F, F, F, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zfh];
Single(0x0400004B), RV32 | RV64, [X, X, X, X, Ident] => [R(7), R(15), R(20), R(27), RoundingMode(12)], [Ex_Zhinx];
Single(0x0400704B), RV32 | RV64, [F, F, F, F] => [R(7), R(15), R(20), R(27)], [Ex_Zfh];
Single(0x0400704B), RV32 | RV64, [X, X, X, X] => [R(7), R(15), R(20), R(27)], [Ex_Zhinx];
],
"fsgnj.h" = [
Single(0x24000053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x24000053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fsgnjn.h" = [
Single(0x24001053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x24001053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fsgnjx.h" = [
Single(0x24002053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x24002053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"fsh" = [
Single(0x00001027), RV32 | RV64, [F, RefOffset] => [R(20), R(15), SImm(12, 0), BitRange(7, 5, 0), BitRange(25, 7, 5), Next], [Ex_Zfh, Ex_Zfhmin];
Single(0x00001027), RV32 | RV64, [F, RefLabel] => [R(20), R(15), Offset(LO12S)], [Ex_Zfh, Ex_Zfhmin];
Double(0x00000017, 0x00001027), RV32 | RV64, [F, Offset, X] => [R(20+32), Offset(SPLIT32S), Rno0(7), Repeat, R(15+32)], [Ex_Zfh, Ex_Zfhmin];
],
"fsqrt.h" = [
Single(0x5C000053), RV32 | RV64, [F, F, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zfh];
Single(0x5C000053), RV32 | RV64, [X, X, Ident] => [R(7), R(15), RoundingMode(12)], [Ex_Zhinx];
Single(0x5C007053), RV32 | RV64, [F, F] => [R(7), R(15)], [Ex_Zfh];
Single(0x5C007053), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zhinx];
],
"fsub.h" = [
Single(0x0C000053), RV32 | RV64, [F, F, F, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zfh];
Single(0x0C000053), RV32 | RV64, [X, X, X, Ident] => [R(7), R(15), R(20), RoundingMode(12)], [Ex_Zhinx];
Single(0x0C007053), RV32 | RV64, [F, F, F] => [R(7), R(15), R(20)], [Ex_Zfh];
Single(0x0C007053), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zhinx];
],
"cbo.clean" = [
Single(0x0010200F), RV32 | RV64, [Ref] => [R(15)], [Ex_Zicbom];
],
"cbo.flush" = [
Single(0x0020200F), RV32 | RV64, [Ref] => [R(15)], [Ex_Zicbom];
],
"cbo.inval" = [
Single(0x0000200F), RV32 | RV64, [Ref] => [R(15)], [Ex_Zicbom];
],
"prefetch.i" = [
Single(0x00006013), RV32 | RV64, [RefOffset] => [R(15), SImm(12, 5), BitRange(25, 7, 5), Next], [Ex_Zicbop];
],
"prefetch.r" = [
Single(0x00106013), RV32 | RV64, [RefOffset] => [R(15), SImm(12, 5), BitRange(25, 7, 5), Next], [Ex_Zicbop];
],
"prefetch.w" = [
Single(0x00306013), RV32 | RV64, [RefOffset] => [R(15), SImm(12, 5), BitRange(25, 7, 5), Next], [Ex_Zicbop];
],
"cbo.zero" = [
Single(0x0040200F), RV32 | RV64, [Ref] => [R(15)], [Ex_Zicboz];
],
"lpad" = [
Single(0x00000017), RV32 | RV64, [Imm] => [UImm(20, 0), BitRange(12, 20, 0), Next], [Ex_Zicfilp];
],
"ssamoswap.d" = [
Single(0x4800302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.d.aq" = [
Single(0x4C00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.d.aqrl" = [
Single(0x4E00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.d.rl" = [
Single(0x4A00302F), RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.w" = [
Single(0x4800202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.w.aq" = [
Single(0x4C00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.w.aqrl" = [
Single(0x4E00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"ssamoswap.w.rl" = [
Single(0x4A00202F), RV32 | RV64, [X, X, Ref] => [R(7), R(20), R(15)], [Ex_Zicfiss];
],
"sspopchk" = [
Single(0xCDC0C073), RV32 | RV64, [Reg(RegId::X1)] => [], [Ex_Zicfiss];
Single(0xCDC2C073), RV32 | RV64, [Reg(RegId::X5)] => [], [Ex_Zicfiss];
],
"sspush" = [
Single(0xCE104073), RV32 | RV64, [Reg(RegId::X1)] => [], [Ex_Zicfiss];
Single(0xCE504073), RV32 | RV64, [Reg(RegId::X5)] => [], [Ex_Zicfiss];
],
"ssrdp" = [
Single(0xCDC04073), RV32 | RV64, [X] => [Rno0(7)], [Ex_Zicfiss];
],
"rdcycle" = [
Single(0xC0002073), RV32 | RV64, [X] => [R(7)], [Ex_Zicntr];
],
"rdcycleh" = [
Single(0xC8002073), RV32 , [X] => [R(7)], [Ex_Zicntr];
],
"rdinstret" = [
Single(0xC0202073), RV32 | RV64, [X] => [R(7)], [Ex_Zicntr];
],
"rdinstreth" = [
Single(0xC8202073), RV32 , [X] => [R(7)], [Ex_Zicntr];
],
"rdtime" = [
Single(0xC0102073), RV32 | RV64, [X] => [R(7)], [Ex_Zicntr];
],
"rdtimeh" = [
Single(0xC8102073), RV32 , [X] => [R(7)], [Ex_Zicntr];
],
"czero.eqz" = [
Single(0x0E005033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zicond];
],
"czero.nez" = [
Single(0x0E007033), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zicond];
],
"csrc" = [
Single(0x00003073), RV32 | RV64, [Imm, X] => [Csr(20), R(15)], [Ex_Zicsr];
],
"csrci" = [
Single(0x00007073), RV32 | RV64, [Imm, Imm] => [Csr(20), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_Zicsr];
],
"csrr" = [
Single(0x00002073), RV32 | RV64, [X, Imm] => [R(7), Csr(20)], [Ex_Zicsr];
],
"csrrc" = [
Single(0x00003073), RV32 | RV64, [X, Imm, X] => [R(7), Csr(20), R(15)], [Ex_Zicsr];
],
"csrrci" = [
Single(0x00007073), RV32 | RV64, [X, Imm, Imm] => [R(7), Csr(20), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_Zicsr];
],
"csrrs" = [
Single(0x00002073), RV32 | RV64, [X, Imm, X] => [R(7), Csr(20), R(15)], [Ex_Zicsr];
],
"csrrsi" = [
Single(0x00006073), RV32 | RV64, [X, Imm, Imm] => [R(7), Csr(20), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_Zicsr];
],
"csrrw" = [
Single(0x00001073), RV32 | RV64, [X, Imm, X] => [R(7), Csr(20), R(15)], [Ex_Zicsr];
],
"csrrwi" = [
Single(0x00005073), RV32 | RV64, [X, Imm, Imm] => [R(7), Csr(20), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_Zicsr];
],
"csrs" = [
Single(0x00002073), RV32 | RV64, [Imm, X] => [Csr(20), R(15)], [Ex_Zicsr];
],
"csrsi" = [
Single(0x00006073), RV32 | RV64, [Imm, Imm] => [Csr(20), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_Zicsr];
],
"csrw" = [
Single(0x00001073), RV32 | RV64, [Imm, X] => [Csr(20), R(15)], [Ex_Zicsr];
],
"csrwi" = [
Single(0x00005073), RV32 | RV64, [Imm, Imm] => [Csr(20), UImm(5, 0), BitRange(15, 5, 0), Next], [Ex_Zicsr];
],
"fence.i" = [
Single(0x0000100F), RV32 | RV64, [] => [], [Ex_Zifencei];
],
"ntl.all" = [
Single(0x00500033), RV32 | RV64, [] => [], [Ex_Zihintntl];
],
"ntl.p1" = [
Single(0x00200033), RV32 | RV64, [] => [], [Ex_Zihintntl];
],
"ntl.pall" = [
Single(0x00300033), RV32 | RV64, [] => [], [Ex_Zihintntl];
],
"ntl.s1" = [
Single(0x00400033), RV32 | RV64, [] => [], [Ex_Zihintntl];
],
"mop.r.0" = [
Single(0x81C04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.1" = [
Single(0x81D04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.10" = [
Single(0x89E04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.11" = [
Single(0x89F04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.12" = [
Single(0x8DC04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.13" = [
Single(0x8DD04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.14" = [
Single(0x8DE04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.15" = [
Single(0x8DF04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.16" = [
Single(0xC1C04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.17" = [
Single(0xC1D04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.18" = [
Single(0xC1E04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.19" = [
Single(0xC1F04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.2" = [
Single(0x81E04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.20" = [
Single(0xC5C04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.21" = [
Single(0xC5D04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.22" = [
Single(0xC5E04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.23" = [
Single(0xC5F04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.24" = [
Single(0xC9C04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.25" = [
Single(0xC9D04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.26" = [
Single(0xC9E04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.27" = [
Single(0xC9F04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.28" = [
Single(0xCDC04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.29" = [
Single(0xCDD04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.3" = [
Single(0x81F04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.30" = [
Single(0xCDE04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.31" = [
Single(0xCDF04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.4" = [
Single(0x85C04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.5" = [
Single(0x85D04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.6" = [
Single(0x85E04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.7" = [
Single(0x85F04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.8" = [
Single(0x89C04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.9" = [
Single(0x89D04073), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zimop];
],
"mop.r.N" = [
Single(0x81C04073), RV32 | RV64, [Imm, X, X] => [UImm(5, 0), BitRange(20, 2, 0), BitRange(26, 2, 2), BitRange(30, 1, 4), Next, R(7), R(15)], [Ex_Zimop];
],
"mop.rr.0" = [
Single(0x82004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.1" = [
Single(0x86004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.2" = [
Single(0x8A004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.3" = [
Single(0x8E004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.4" = [
Single(0xC2004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.5" = [
Single(0xC6004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.6" = [
Single(0xCA004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.7" = [
Single(0xCE004073), RV32 | RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zimop];
],
"mop.rr.N" = [
Single(0x82004073), RV32 | RV64, [Imm, X, X, X] => [UImm(3, 0), BitRange(26, 2, 0), BitRange(30, 1, 2), Next, R(7), R(15), R(20)], [Ex_Zimop];
],
"aes32dsi" = [
Single(0x2A000033), RV32 , [X, X, X, Imm] => [R(7), R(15), R(20), UImm(2, 0), BitRange(30, 2, 0), Next], [Ex_Zk, Ex_Zkn, Ex_Zknd];
],
"aes32dsmi" = [
Single(0x2E000033), RV32 , [X, X, X, Imm] => [R(7), R(15), R(20), UImm(2, 0), BitRange(30, 2, 0), Next], [Ex_Zk, Ex_Zkn, Ex_Zknd];
],
"aes64ds" = [
Single(0x3A000033), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknd];
],
"aes64dsm" = [
Single(0x3E000033), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknd];
],
"aes64im" = [
Single(0x30001013), RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknd];
],
"aes64ks1i" = [
Single(0x31001013), RV64, [X, X, Imm] => [R(7), R(15), UImmRange(0, 10), BitRange(20, 4, 0), Next], [Ex_Zk, Ex_Zkn, Ex_Zknd, Ex_Zkne];
],
"aes64ks2" = [
Single(0x7E000033), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknd, Ex_Zkne];
],
"aes32esi" = [
Single(0x22000033), RV32 , [X, X, X, Imm] => [R(7), R(15), R(20), UImm(2, 0), BitRange(30, 2, 0), Next], [Ex_Zk, Ex_Zkn, Ex_Zkne];
],
"aes32esmi" = [
Single(0x26000033), RV32 , [X, X, X, Imm] => [R(7), R(15), R(20), UImm(2, 0), BitRange(30, 2, 0), Next], [Ex_Zk, Ex_Zkn, Ex_Zkne];
],
"aes64es" = [
Single(0x32000033), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zkne];
],
"aes64esm" = [
Single(0x36000033), RV64, [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zkne];
],
"sha256sig0" = [
Single(0x10201013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha256sig1" = [
Single(0x10301013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha256sum0" = [
Single(0x10001013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha256sum1" = [
Single(0x10101013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sig0" = [
Single(0x10601013), RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sig0h" = [
Single(0x5C000033), RV32 , [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sig0l" = [
Single(0x54000033), RV32 , [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sig1" = [
Single(0x10701013), RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sig1h" = [
Single(0x5E000033), RV32 , [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sig1l" = [
Single(0x56000033), RV32 , [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sum0" = [
Single(0x10401013), RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sum0r" = [
Single(0x50000033), RV32 , [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sum1" = [
Single(0x10501013), RV64, [X, X] => [R(7), R(15)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sha512sum1r" = [
Single(0x52000033), RV32 , [X, X, X] => [R(7), R(15), R(20)], [Ex_Zk, Ex_Zkn, Ex_Zknh];
],
"sm4ed" = [
Single(0x30000033), RV32 | RV64, [X, X, X, Imm] => [R(7), R(15), R(20), UImm(2, 0), BitRange(30, 2, 0), Next], [Ex_Zks, Ex_Zksed];
],
"sm4ks" = [
Single(0x34000033), RV32 | RV64, [X, X, X, Imm] => [R(7), R(15), R(20), UImm(2, 0), BitRange(30, 2, 0), Next], [Ex_Zks, Ex_Zksed];
],
"sm3p0" = [
Single(0x10801013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zks, Ex_Zksh];
],
"sm3p1" = [
Single(0x10901013), RV32 | RV64, [X, X] => [R(7), R(15)], [Ex_Zks, Ex_Zksh];
],
)