Skip to content

Commit 5742dda

Browse files
author
dev-aditya-hub
committed
fix(testgen): add _frm support to cp_fs2_edges and cp_fs3_edges
1 parent 623c0a4 commit 5742dda

1 file changed

Lines changed: 29 additions & 45 deletions

File tree

generators/testgen/src/testgen/coverpoints/cp_fp_reg_edges.py

Lines changed: 29 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -16,76 +16,60 @@
1616
from testgen.formatters.params import generate_random_params
1717

1818

19-
@add_coverpoint_generator("cp_fs1_edges")
20-
def make_fs1_edges(instr_name: str, instr_type: str, coverpoint: str, test_data: TestData) -> list[TestChunk]:
21-
"""Generate tests for fs1 edge values."""
19+
def _select_edges(coverpoint: str) -> tuple:
2220
if coverpoint.endswith("_D"):
23-
edges = FLOAT_EDGES.double
21+
return FLOAT_EDGES.double
2422
elif coverpoint.endswith("_H"):
25-
edges = FLOAT_EDGES.half
23+
return FLOAT_EDGES.half
2624
elif coverpoint.endswith("_BF16"):
27-
edges = FLOAT_EDGES.bf16
28-
else:
29-
edges = FLOAT_EDGES.single
25+
return FLOAT_EDGES.bf16
26+
return FLOAT_EDGES.single
27+
3028

31-
cross_frm = "_frm" in coverpoint
29+
def _frm_modes(coverpoint: str) -> tuple:
30+
return ("dyn", "rdn", "rmm", "rne", "rtz", "rup") if "_frm" in coverpoint else (None,)
3231

33-
frm_modes = ("dyn", "rdn", "rmm", "rne", "rtz", "rup") if cross_frm else [None]
3432

33+
@add_coverpoint_generator("cp_fs1_edges")
34+
def make_fs1_edges(instr_name: str, instr_type: str, coverpoint: str, test_data: TestData) -> list[TestChunk]:
35+
"""Generate tests for fs1 edge values."""
3536
test_chunks: list[TestChunk] = []
36-
for edge_val in edges:
37-
for frm_mode in frm_modes:
37+
for edge_val in _select_edges(coverpoint):
38+
for frm_mode in _frm_modes(coverpoint):
3839
params = generate_random_params(test_data, instr_type, exclude_regs=[0], fs1val=edge_val, frm=frm_mode)
3940
bin_name = f"b{edge_val:#x}{f'_{frm_mode}' if frm_mode is not None else ''}"
4041
desc = f"{coverpoint} (Test source fs1 value = {test_data.flen_format_str.format(edge_val)}{f', frm = {frm_mode}' if frm_mode is not None else ''})"
4142
tc = format_single_testcase(instr_name, instr_type, test_data, params, desc, bin_name, coverpoint)
4243
test_chunks.append(tc)
4344
return_test_regs(test_data, params)
44-
4545
return test_chunks
4646

4747

4848
@add_coverpoint_generator("cp_fs2_edges")
4949
def make_fs2_edges(instr_name: str, instr_type: str, coverpoint: str, test_data: TestData) -> list[TestChunk]:
5050
"""Generate tests for fs2 edge values."""
51-
if coverpoint.endswith("_D"):
52-
edges = FLOAT_EDGES.double
53-
elif coverpoint.endswith("_H"):
54-
edges = FLOAT_EDGES.half
55-
elif coverpoint.endswith("_BF16"):
56-
edges = FLOAT_EDGES.bf16
57-
else:
58-
edges = FLOAT_EDGES.single
59-
6051
test_chunks: list[TestChunk] = []
61-
for edge_val in edges:
62-
params = generate_random_params(test_data, instr_type, exclude_regs=[0], fs2val=edge_val)
63-
desc = f"{coverpoint} (Test source fs2 value = {test_data.flen_format_str.format(edge_val)})"
64-
tc = format_single_testcase(instr_name, instr_type, test_data, params, desc, f"b{edge_val:#x}", coverpoint)
65-
test_chunks.append(tc)
66-
return_test_regs(test_data, params)
67-
52+
for edge_val in _select_edges(coverpoint):
53+
for frm_mode in _frm_modes(coverpoint):
54+
params = generate_random_params(test_data, instr_type, exclude_regs=[0], fs2val=edge_val, frm=frm_mode)
55+
bin_name = f"b{edge_val:#x}{f'_{frm_mode}' if frm_mode is not None else ''}"
56+
desc = f"{coverpoint} (Test source fs2 value = {test_data.flen_format_str.format(edge_val)}{f', frm = {frm_mode}' if frm_mode is not None else ''})"
57+
tc = format_single_testcase(instr_name, instr_type, test_data, params, desc, bin_name, coverpoint)
58+
test_chunks.append(tc)
59+
return_test_regs(test_data, params)
6860
return test_chunks
6961

7062

7163
@add_coverpoint_generator("cp_fs3_edges")
7264
def make_fs3_edges(instr_name: str, instr_type: str, coverpoint: str, test_data: TestData) -> list[TestChunk]:
7365
"""Generate tests for fs3 edge values."""
74-
if coverpoint.endswith("_D"):
75-
edges = FLOAT_EDGES.double
76-
elif coverpoint.endswith("_H"):
77-
edges = FLOAT_EDGES.half
78-
elif coverpoint.endswith("_BF16"):
79-
edges = FLOAT_EDGES.bf16
80-
else:
81-
edges = FLOAT_EDGES.single
82-
8366
test_chunks: list[TestChunk] = []
84-
for edge_val in edges:
85-
params = generate_random_params(test_data, instr_type, exclude_regs=[0], fs3val=edge_val)
86-
desc = f"{coverpoint} (Test source fs3 value = {test_data.flen_format_str.format(edge_val)})"
87-
tc = format_single_testcase(instr_name, instr_type, test_data, params, desc, f"b{edge_val:#x}", coverpoint)
88-
test_chunks.append(tc)
89-
return_test_regs(test_data, params)
90-
67+
for edge_val in _select_edges(coverpoint):
68+
for frm_mode in _frm_modes(coverpoint):
69+
params = generate_random_params(test_data, instr_type, exclude_regs=[0], fs3val=edge_val, frm=frm_mode)
70+
bin_name = f"b{edge_val:#x}{f'_{frm_mode}' if frm_mode is not None else ''}"
71+
desc = f"{coverpoint} (Test source fs3 value = {test_data.flen_format_str.format(edge_val)}{f', frm = {frm_mode}' if frm_mode is not None else ''})"
72+
tc = format_single_testcase(instr_name, instr_type, test_data, params, desc, bin_name, coverpoint)
73+
test_chunks.append(tc)
74+
return_test_regs(test_data, params)
9175
return test_chunks

0 commit comments

Comments
 (0)