# Xh3bextm macros are from the Hazard3 reference manual, slightly modified .macro h3.bextm rd rs1 rs2 nbits .if (\nbits < 1) || (\nbits > 8) .err .endif .insn r 0x0b, 0x0, (((\nbits - 1) & 0x7 ) << 1), \rd, \rs1, \rs2 .endm .macro h3.bextmi rd rs1 shamt nbits .if (\nbits < 1) || (\nbits > 8) .err .endif .if (\shamt < 0) || (\shamt > 31) .err .endif .insn i 0x0b, 0x4, \rd, \rs1, (\shamt & 0x1f) | (((\nbits - 1) & 0x7 ) << 6) .endm li t0,0xdeadbeef li t1,4 h3.bextm s0,t0,t1,6 # 0xDEADBEEF = 1101 1110 1010 1101 1011 1110 1110 1111 (rs1) # vv vvvv # 10 1110 = 0x2E # |---6---| (imm) # |--4-| (rs2) h3.bextmi s1,t0,16,3 # 0xDEADBEEF = 1101 1110 1010 1101 1011 1110 1110 1111 (rs1) # vvv # 101 = 0x5 # |-3-| (imm2) # |--------16--------| (imm1) li a7,10 ecall