Merge pull request #679 from kevindkim723/extract_arch_test_fix

fixed bug in intdivrem test vector extraction
This commit is contained in:
Rose Thompson 2024-03-20 09:27:45 -05:00 committed by GitHub
commit a884c04b62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 227 additions and 0 deletions

View File

@ -1078,4 +1078,213 @@ IEEE754 1
deriv fdqh_ieee_div_4_4_rv64gc fdqh_div_4_4_rv64gc
IEEE754 1
#### DIVIDER VARIANTS WITH IDIV ON FPU
deriv f_ieee_div_2_1i_rv32gc f_ieee_div_2_1_rv32gc
IDIV_ON_FPU 1
deriv f_ieee_div_2_2i_rv32gc f_ieee_div_2_2_rv32gc
IDIV_ON_FPU 1
deriv f_ieee_div_2_4i_rv32gc f_ieee_div_2_4_rv32gc
IDIV_ON_FPU 1
deriv f_ieee_div_4_1i_rv32gc f_ieee_div_4_1_rv32gc
IDIV_ON_FPU 1
deriv f_ieee_div_4_2i_rv32gc f_ieee_div_4_2_rv32gc
IDIV_ON_FPU 1
deriv f_ieee_div_2_1i_rv64gc f_ieee_div_2_1_rv64gc
IDIV_ON_FPU 1
deriv f_ieee_div_2_2i_rv64gc f_ieee_div_2_2_rv64gc
IDIV_ON_FPU 1
deriv f_ieee_div_2_4i_rv64gc f_ieee_div_2_4_rv64gc
IDIV_ON_FPU 1
deriv f_ieee_div_4_1i_rv64gc f_ieee_div_4_1_rv64gc
IDIV_ON_FPU 1
deriv f_ieee_div_4_2i_rv64gc f_ieee_div_4_2_rv64gc
IDIV_ON_FPU 1
deriv f_ieee_div_4_4i_rv64gc f_ieee_div_4_4_rv64gc
IDIV_ON_FPU 1
#### FH_only, RK variable
deriv fh_ieee_div_2_1i_rv32gc fh_ieee_div_2_1_rv32gc
IDIV_ON_FPU 1
deriv fh_ieee_div_2_2i_rv32gc fh_ieee_div_2_2_rv32gc
IDIV_ON_FPU 1
deriv fh_ieee_div_2_4i_rv32gc fh_ieee_div_2_4_rv32gc
IDIV_ON_FPU 1
deriv fh_ieee_div_4_1i_rv32gc fh_ieee_div_4_1_rv32gc
IDIV_ON_FPU 1
deriv fh_ieee_div_4_2i_rv32gc fh_ieee_div_4_2_rv32gc
IDIV_ON_FPU 1
deriv fh_ieee_div_2_1i_rv64gc fh_ieee_div_2_1_rv64gc
IDIV_ON_FPU 1
deriv fh_ieee_div_2_2i_rv64gc fh_ieee_div_2_2_rv64gc
IDIV_ON_FPU 1
deriv fh_ieee_div_2_4i_rv64gc fh_ieee_div_2_4_rv64gc
IDIV_ON_FPU 1
deriv fh_ieee_div_4_1i_rv64gc fh_ieee_div_4_1_rv64gc
IDIV_ON_FPU 1
deriv fh_ieee_div_4_2i_rv64gc fh_ieee_div_4_2_rv64gc
IDIV_ON_FPU 1
deriv fh_ieee_div_4_4i_rv64gc fh_ieee_div_4_4_rv64gc
IDIV_ON_FPU 1
# FD only , rk variable
deriv fd_ieee_div_2_1i_rv32gc fd_ieee_div_2_1_rv32gc
IDIV_ON_FPU 1
deriv fd_ieee_div_2_2i_rv32gc fd_ieee_div_2_2_rv32gc
IDIV_ON_FPU 1
deriv fd_ieee_div_2_4i_rv32gc fd_ieee_div_2_4_rv32gc
IDIV_ON_FPU 1
deriv fd_ieee_div_4_1i_rv32gc fd_ieee_div_4_1_rv32gc
IDIV_ON_FPU 1
deriv fd_ieee_div_4_2i_rv32gc fd_ieee_div_4_2_rv32gc
IDIV_ON_FPU 1
deriv fd_ieee_div_2_1i_rv64gc fd_ieee_div_2_1_rv64gc
IDIV_ON_FPU 1
deriv fd_ieee_div_2_2i_rv64gc fd_ieee_div_2_2_rv64gc
IDIV_ON_FPU 1
deriv fd_ieee_div_2_4i_rv64gc fd_ieee_div_2_4_rv64gc
IDIV_ON_FPU 1
deriv fd_ieee_div_4_1i_rv64gc fd_ieee_div_4_1_rv64gc
IDIV_ON_FPU 1
deriv fd_ieee_div_4_2i_rv64gc fd_ieee_div_4_2_rv64gc
IDIV_ON_FPU 1
deriv fd_ieee_div_4_4i_rv64gc fd_ieee_div_4_4_rv64gc
IDIV_ON_FPU 1
# FDH only , rk variable
deriv fdh_ieee_div_2_1i_rv32gc fdh_ieee_div_2_1_rv32gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_2_2i_rv32gc fdh_ieee_div_2_2_rv32gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_2_4i_rv32gc fdh_ieee_div_2_4_rv32gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_4_1i_rv32gc fdh_ieee_div_4_1_rv32gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_4_2i_rv32gc fdh_ieee_div_4_2_rv32gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_2_1i_rv64gc fdh_ieee_div_2_1_rv64gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_2_2i_rv64gc fdh_ieee_div_2_2_rv64gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_2_4i_rv64gc fdh_ieee_div_2_4_rv64gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_4_1i_rv64gc fdh_ieee_div_4_1_rv64gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_4_2i_rv64gc fdh_ieee_div_4_2_rv64gc
IDIV_ON_FPU 1
deriv fdh_ieee_div_4_4i_rv64gc fdh_ieee_div_4_4_rv64gc
IDIV_ON_FPU 1
# FDQ only , rk variable
deriv fdq_ieee_div_2_1i_rv32gc fdq_ieee_div_2_1_rv32gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_2_2i_rv32gc fdq_ieee_div_2_2_rv32gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_2_4i_rv32gc fdq_ieee_div_2_4_rv32gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_4_1i_rv32gc fdq_ieee_div_4_1_rv32gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_4_2i_rv32gc fdq_ieee_div_4_2_rv32gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_2_1i_rv64gc fdq_ieee_div_2_1_rv64gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_2_2i_rv64gc fdq_ieee_div_2_2_rv64gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_2_4i_rv64gc fdq_ieee_div_2_4_rv64gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_4_1i_rv64gc fdq_ieee_div_4_1_rv64gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_4_2i_rv64gc fdq_ieee_div_4_2_rv64gc
IDIV_ON_FPU 1
deriv fdq_ieee_div_4_4i_rv64gc fdq_ieee_div_4_4_rv64gc
IDIV_ON_FPU 1
# FDQH only , rk variable
deriv fdqh_ieee_div_2_1i_rv32gc fdqh_ieee_div_2_1_rv32gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_2_2i_rv32gc fdqh_ieee_div_2_2_rv32gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_2_4i_rv32gc fdqh_ieee_div_2_4_rv32gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_4_1i_rv32gc fdqh_ieee_div_4_1_rv32gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_4_2i_rv32gc fdqh_ieee_div_4_2_rv32gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_2_1i_rv64gc fdqh_ieee_div_2_1_rv64gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_2_2i_rv64gc fdqh_ieee_div_2_2_rv64gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_2_4i_rv64gc fdqh_ieee_div_2_4_rv64gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_4_1i_rv64gc fdqh_ieee_div_4_1_rv64gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_4_2i_rv64gc fdqh_ieee_div_4_2_rv64gc
IDIV_ON_FPU 1
deriv fdqh_ieee_div_4_4i_rv64gc fdqh_ieee_div_4_4_rv64gc
IDIV_ON_FPU 1

View File

@ -116,6 +116,11 @@ def create_vectors(my_config):
if "op1val" in line:
# print("det2")
# parse line
# handle special case where destination register is hardwired to zero
if "dest:x0" in line:
answer = "x" * len(answer)
op1val = line.split("op1val")[1].split("x")[1].split(";")[0]
if my_config.op != "fsqrt": # sqrt doesn't have two input vals
op2val = line.split("op2val")[1].split("x")[1].strip()
@ -158,6 +163,9 @@ def create_vectors(my_config):
if "op1val" in line:
# print("det2")
# parse line
# handle special case where destination register is hardwired to zero
if "dest:x0" in line:
answer = "x" * len(answer)
op1val = line.split("op1val")[1].split("x")[1].split(";")[0]
if "-" in line.split("op1val")[1].split("x")[0]: # neg sign handling
op1val = twos_comp(my_config.bits, op1val)
@ -201,7 +209,12 @@ def create_vectors(my_config):
if "op1val" in line:
# print("det2")
# parse line
# handle special case where destination register is hardwired to zero
if "dest:x0" in line:
answer = "x" * len(answer)
op1val = line.split("op1val")[1].split("x")[1].split(";")[0]
if "-" in line.split("op1val")[1].split("x")[0]: # neg sign handling
op1val = line.split("op1val")[1].split("x")[1].split(";")[0]
if "-" in line.split("op1val")[1].split("x")[0]: # neg sign handling
op1val = twos_comp(my_config.bits, op1val)
if my_config.op != "fsqrt": # sqrt doesn't have two input vals, unnec here but keeping for later
@ -243,6 +256,11 @@ def create_vectors(my_config):
if "op1val" in line:
# print("det2")
# parse line
# handle special case where destination register is hardwired to zero
if "dest:x0" in line:
answer = "x" * len(answer)
op1val = line.split("op1val")[1].split("x")[1].split(";")[0]
if "-" in line.split("op1val")[1].split("x")[0]: # neg sign handling
op1val = twos_comp(my_config.bits, op1val)