sh1add:
    config: 
      - check ISA:=regex(.*E.*Zba.*) ;def RVTEST_E = True
    mnemonics: 
      sh1add: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_sgn , *base_rs2val_sgn , *rfmt_val_comb_sgn]
      abstract_comb:
        'bitmanip_dataset(xlen)': 0
        <<: [*rs1val_walking, *rs2val_walking]

sh2add:
    config: 
      - check ISA:=regex(.*E.*Zba.*) ;def RVTEST_E = True
    mnemonics: 
      sh2add: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_sgn , *base_rs2val_sgn , *rfmt_val_comb_sgn]
      abstract_comb:
        'bitmanip_dataset(xlen)': 0
        <<: [*rs1val_walking, *rs2val_walking]
        
sh3add:
    config: 
      - check ISA:=regex(.*E.*Zba.*) ;def RVTEST_E = True
    mnemonics: 
      sh3add: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_sgn , *base_rs2val_sgn , *rfmt_val_comb_sgn]
      abstract_comb:
        'bitmanip_dataset(xlen)': 0
        <<: [*rs1val_walking, *rs2val_walking]
        
xnor:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      xnor: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_unsgn , *base_rs2val_unsgn , *rfmt_val_comb_unsgn]
      abstract_comb:
        'bitmanip_dataset(xlen,signed=False)': 0
        <<: [*rs1val_walking_unsgn, *rs2val_walking_unsgn]
        'uniform_random(20, 100, ["rs1_val","rs2_val"], [xlen, xlen])': 0
        
zext.h_32:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      zext.h: 0
    base_op: pack
    p_op_cond: rs2 == x0
    rs1: 
      <<: *rv32e_regs
    rd: 
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      'rs1_val == 0': 0
      'rs1_val == 0x80': 0
      'rs1_val == 0xFF80': 0
      abstract_comb:
        'walking_ones("rs1_val", xlen, False)': 0
        'walking_zeros("rs1_val", xlen, False)': 0
        'uniform_random(20, 100, ["rs1_val"], [xlen])': 0
andn:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      andn: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_unsgn , *base_rs2val_unsgn , *rfmt_val_comb_unsgn]
      abstract_comb:
        <<: [*rs1val_walking_unsgn, *rs2val_walking_unsgn]
        'uniform_random(20, 100, ["rs1_val","rs2_val"], [xlen, xlen])': 0
        'bitmanip_dataset(xlen,["rs1_val","rs2_val"],False)': 0

clz:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      clz: 0
    rs1: 
      <<: *rv32e_regs
    rd: 
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:
        <<: [*rs1val_walking_unsgn]
        'leading_zeros(xlen, ["rs1_val"], [xlen], 11)': 0
        'leading_ones(xlen, ["rs1_val"], [xlen], 10)': 0
        'trailing_zeros(xlen, ["rs1_val"], [xlen], 12)': 0
        'trailing_ones(xlen, ["rs1_val"], [xlen], 13)': 0

ctz:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      ctz: 0
    rs1: 
      <<: *rv32e_regs
    rd: 
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:
        <<: [*rs1val_walking_unsgn]
        'leading_zeros(xlen, ["rs1_val"], [xlen], 11)': 0
        'leading_ones(xlen, ["rs1_val"], [xlen], 10)': 0
        'trailing_zeros(xlen, ["rs1_val"], [xlen], 12)': 0
        'trailing_ones(xlen, ["rs1_val"], [xlen], 13)': 0
        
cpop:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      cpop: 0
    rs1: 
      <<: *rv32e_regs
    rd: 
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:
        <<: [*rs1val_walking_unsgn]
        'leading_zeros(xlen, ["rs1_val"], [xlen], 11)': 0
        'leading_ones(xlen, ["rs1_val"], [xlen], 10)': 0
        'trailing_zeros(xlen, ["rs1_val"], [xlen], 12)': 0
        'trailing_ones(xlen, ["rs1_val"], [xlen], 13)': 0
        
max:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      max: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_sgn , *base_rs2val_sgn , *rfmt_val_comb_sgn]
      abstract_comb:
        'bitmanip_dataset(xlen)': 0
        <<: [*rs1val_walking, *rs2val_walking]

maxu:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      maxu: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_unsgn , *base_rs2val_unsgn , *rfmt_val_comb_unsgn]
      abstract_comb:
        'bitmanip_dataset(xlen,signed=False)': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]
        
min:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      min: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_sgn , *base_rs2val_sgn , *rfmt_val_comb_sgn]
      abstract_comb:
        'bitmanip_dataset(xlen)': 0
        <<: [*rs1val_walking, *rs2val_walking]
        
minu:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      minu: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_unsgn , *base_rs2val_unsgn , *rfmt_val_comb_unsgn]
      abstract_comb:
        'bitmanip_dataset(xlen,signed=False)': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]
        
orcb_32:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      orc.b: 0
    base_op: gorci
    p_op_cond: imm_val == 7
    rs1: 
      <<: *rv32e_regs
    rd: 
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      'rs1_val == 0x1020408': 0
      'rs1_val == 0x2040801': 0
      'rs1_val == 0x4080102': 0
      'rs1_val == 0x8010204': 0
      abstract_comb:
        <<: [*rs1val_walking_unsgn]

        
orn:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      orn: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      <<: [*base_rs1val_unsgn , *base_rs2val_unsgn , *rfmt_val_comb_unsgn]
      abstract_comb:
        'bitmanip_dataset(xlen,signed=False)': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]
        'uniform_random(20, 100, ["rs1_val","rs2_val"], [xlen, xlen])': 0

rev8_32:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      rev8: 0
    base_op: grevi
    p_op_cond: imm_val == 24
    rs1: 
      <<: *rv32e_regs
    rd: 
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      'rs1_val == 0x1020408': 0
      'rs1_val == 0x2040801': 0
      'rs1_val == 0x4080102': 0
      'rs1_val == 0x8010204': 0
      abstract_comb:
        'leading_ones(32, ["rs1_val"], [32])': 0
        'trailing_ones(32, ["rs1_val"], [32])': 0
        'leading_zeros(32, ["rs1_val"], [32])': 0
        'trailing_zeros(32, ["rs1_val"], [32])': 0
        'bitmanip_dataset(xlen,["rs1_val"],signed=False)': 0
        
rol:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      rol: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      abstract_comb:      
        'leading_ones(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        'trailing_ones(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        'leading_zeros(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        'trailing_zeros(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0

ror:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*I.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*I.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*I.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*I.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      ror: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      abstract_comb:      
        'leading_ones(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        'trailing_ones(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        'leading_zeros(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        'trailing_zeros(32, ["rs1_val","rs2_val"],[xlen,xlen])': 0
        
rori:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkb.*) ;def RVTEST_E = True
      - check ISA:=regex(.*.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*I.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*I.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      rori: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:      
        'leading_ones(32, ["rs1_val","imm_val"],[32,5])': 0
        'trailing_ones(32, ["rs1_val","imm_val"],[32,5])': 0
        'leading_zeros(32, ["rs1_val","imm_val"],[32,5])': 0
        'trailing_zeros(32, ["rs1_val","imm_val"],[32,5])': 0

sext.b:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      sext.b: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      'rs1_val == 0': 0
      'rs1_val == 0x8000': 0
      abstract_comb:      
        'walking_ones("rs1_val", xlen, False)': 0
        'walking_zeros("rs1_val", xlen, False)': 0
        'uniform_random(20, 100, ["rs1_val"], [xlen])': 0

sext.h:
    config: 
      - check ISA:=regex(.*E.*Zbb.*) ;def RVTEST_E = True
    mnemonics: 
      sext.h: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      'rs1_val == 0': 0
      'rs1_val == 0x80': 0
      'rs1_val == 0xff80': 0
      abstract_comb:      
        'walking_ones("rs1_val", xlen, False)': 0
        'walking_zeros("rs1_val", xlen, False)': 0
        'uniform_random(20, 100, ["rs1_val"], [xlen])': 0

clmul:
    config: 
      - check ISA:=regex(.*E.*Zbc.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkc.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
    mnemonics: 
      clmul: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      'rs1_val==1 and rs2_val==1': 0
      'rs1_val==1 and rs2_val==0': 0 
      'rs1_val==1 and rs2_val==0x1000': 0
      'rs1_val==0 and rs2_val==1': 0
      'rs1_val==0 and rs2_val==0': 0 
      'rs1_val==0 and rs2_val==0x1000': 0
      abstract_comb:
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]
        'uniform_random(20, 100, ["rs1_val","rs2_val"], [xlen, xlen])': 0
        
clmulh:
    config: 
      - check ISA:=regex(.*E.*Zbc.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zbkc.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zk.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zkn.*) ;def RVTEST_E = True
      - check ISA:=regex(.*E.*Zks.*) ;def RVTEST_E = True
    mnemonics: 
      clmulh: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      'rs1_val==1 and rs2_val==1': 0
      'rs1_val==1 and rs2_val==0': 0 
      'rs1_val==1 and rs2_val==0x1000': 0
      'rs1_val==0 and rs2_val==1': 0
      'rs1_val==0 and rs2_val==0': 0 
      'rs1_val==0 and rs2_val==0x1000': 0
      abstract_comb:
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]
        'uniform_random(20, 100, ["rs1_val","rs2_val"], [xlen, xlen])': 0

        
clmulr:
    config: 
      - check ISA:=regex(.*E.*Zbc.*) ;def RVTEST_E = True
    mnemonics: 
      clmulr: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      'rs1_val==1 and rs2_val==1': 0
      'rs1_val==1 and rs2_val==0': 0 
      'rs1_val==1 and rs2_val==0x1000': 0
      'rs1_val==0 and rs2_val==1': 0
      'rs1_val==0 and rs2_val==0': 0 
      'rs1_val==0 and rs2_val==0x1000': 0
      abstract_comb:
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]
        'uniform_random(20, 100, ["rs1_val","rs2_val"], [xlen, xlen])': 0

bclr:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      bclr: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      abstract_comb:
#        'xlenlim("rs1_val", xlen)': 0
#        'xlenlim("rs2_val", xlen )': 0
        'walking_ones("rs1_val", ceil(log(xlen, 2)), False)': 0
        'walking_ones("rs2_val", ceil(log(xlen, 2)), False)': 0
        'leading_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]

        
bclri:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      bclri: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:      
#        'xlenlim("rs1_val", xlen)': 0
        'leading_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0

        
bext:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      bext: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      abstract_comb:
#        'xlenlim("rs1_val", xlen)': 0
#        'xlenlim("rs2_val", xlen )': 0
        'walking_ones("rs1_val", ceil(log(xlen, 2)), False)': 0
        'walking_ones("rs2_val", ceil(log(xlen, 2)), False)': 0
        'leading_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]

        
bexti:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      bexti: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:      
#        'xlenlim("rs1_val", xlen)': 0
        'leading_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0

        
binv:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      binv: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      abstract_comb:
#        'xlenlim("rs1_val", xlen)': 0
#        'xlenlim("rs2_val", xlen )': 0
        'walking_ones("rs1_val", ceil(log(xlen, 2)), False)': 0
        'walking_ones("rs2_val", ceil(log(xlen, 2)), False)': 0
        'leading_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]

        
binvi:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      binvi: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:      
#        'xlenlim("rs1_val", xlen)': 0
        'leading_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0
        
bset:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      bset: 0
    rs1: 
      <<: *rv32e_regs
    rs2: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *rfmt_op_comb
    val_comb:
      abstract_comb:
#        'xlenlim("rs1_val", xlen)': 0
#        'xlenlim("rs2_val", xlen )': 0
        'walking_ones("rs1_val", ceil(log(xlen, 2)), False)': 0
        'walking_ones("rs2_val", ceil(log(xlen, 2)), False)': 0
        'leading_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "rs2_val"], [32,5])': 0
        <<: [*rs1val_walking_unsgn,*rs2val_walking_unsgn]

        
bseti:
    config: 
      - check ISA:=regex(.*E.*Zbs.*) ;def RVTEST_E = True
    mnemonics: 
      bseti: 0
    rs1: 
      <<: *rv32e_regs
    rd:
      <<: *rv32e_regs
    op_comb: 
      <<: *ifmt_op_comb
    val_comb:
      abstract_comb:      
#        'xlenlim("rs1_val", xlen)': 0
        'leading_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_ones(32, ["rs1_val", "imm_val"], [32,5])': 0
        'leading_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0
        'trailing_zeros(32, ["rs1_val", "imm_val"], [32,5])': 0
