Skip to content

Commit

Permalink
Update rvopcodesdecoder.py
Browse files Browse the repository at this point in the history
Signed-off-by: Mahendra Vamshi A <77983822+mahendraVamshi@users.noreply.github.com>
  • Loading branch information
mahendraVamshi authored Oct 13, 2023
1 parent eaa6404 commit 3e17fc6
Showing 1 changed file with 35 additions and 23 deletions.
58 changes: 35 additions & 23 deletions riscv_isac/data/rvopcodesdecoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -355,22 +355,34 @@ def decode(self, instrObj_temp):
for arg in args[:-1]:
if 'rd' in arg:
treg = reg_type
if any([instr_name.startswith(x) for x in [
'fcvt.w','fcvt.l','fmv.s','fmv.d','flt','feq','fle','fclass']]):
treg = 'x'
temp_instrobj.rd = (int(get_arg_val(arg)(mcode), 2), treg)
if 'p' in arg:
temp_instrobj.rd = (8+int(get_arg_val(arg)(mcode), 2), treg)
else:
if any([instr_name.startswith(x) for x in [
'fcvt.w','fcvt.l','fmv.s','fmv.d','flt','feq','fle','fclass']]):
treg = 'x'
temp_instrobj.rd = (int(get_arg_val(arg)(mcode), 2), treg)
if 'rs1' in arg:
treg = reg_type
if any([instr_name.startswith(x) for x in [
'fsw','fsd','fcvt.s','fcvt.d','fmv.w','fmv.l']]):
treg = 'x'
temp_instrobj.rs1 = (int(get_arg_val(arg)(mcode), 2), treg)
if 'p' in arg:
temp_instrobj.rs1 = (8+int(get_arg_val(arg)(mcode), 2), treg)
else:
if any([instr_name.startswith(x) for x in [
'fsw','fsd','fcvt.s','fcvt.d','fmv.w','fmv.l']]):
treg = 'x'
temp_instrobj.rs1 = (int(get_arg_val(arg)(mcode), 2), treg)
if 'rs2' in arg:
treg = reg_type
temp_instrobj.rs2 = (int(get_arg_val(arg)(mcode), 2), treg)
if 'p' in arg:
temp_instrobj.rs2 = (8+int(get_arg_val(arg)(mcode), 2), treg)
else:
temp_instrobj.rs2 = (int(get_arg_val(arg)(mcode), 2), treg)
if 'rs3' in arg:
treg = reg_type
temp_instrobj.rs3 = (int(get_arg_val(arg)(mcode), 2), treg)
if 'p' in arg:
temp_instrobj.rs3 = (8+int(get_arg_val(arg)(mcode), 2), treg)
else:
temp_instrobj.rs3 = (int(get_arg_val(arg)(mcode), 2), treg)
if 'csr' in arg:
temp_instrobj.csr = int(get_arg_val(arg)(mcode), 2)
if arg == 'shamt':
Expand Down Expand Up @@ -421,7 +433,7 @@ def decode(self, instrObj_temp):
if arg == 'c_uimm7hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm
if arg == 'c_uimm7lo':
Expand All @@ -440,7 +452,7 @@ def decode(self, instrObj_temp):
if arg == 'c_uimm8hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -453,7 +465,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_uimm9hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -466,7 +478,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_nzimm6hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -479,20 +491,20 @@ def decode(self, instrObj_temp):
elif arg == 'c_imm6hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

elif arg == 'c_nzimm10hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm
elif arg == 'c_nzimm10lo':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm_temp[-1] + imm + imm_temp[0] + '00'
else:
imm = imm + imm_temp

Expand All @@ -505,7 +517,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_nzimm18lo':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm_temp[-1] + imm + imm_temp[0] + '00'
else:
imm = imm + imm_temp

Expand All @@ -525,7 +537,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_bimm9hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -544,7 +556,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_nzuimm6hi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -558,7 +570,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_uimm8sphi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -576,7 +588,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_uimm10sphi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand All @@ -590,7 +602,7 @@ def decode(self, instrObj_temp):
elif arg == 'c_uimm9sphi':
imm_temp = get_arg_val(arg)(mcode)
if imm:
imm = imm_temp + imm[0] + imm[-1] + '00'
imm = imm[-1] + imm_temp + imm[0] + '00'
else:
imm = imm_temp + imm

Expand Down

0 comments on commit 3e17fc6

Please sign in to comment.