42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
TYPES = ('half', 'single')
|
|
TEST_TYPES = ("add", "sub", "div", "mul", "fma", "mad", "prn")
|
|
ROUND_TYPES = ("to_zero", "to_nearest_even", "to_positive_infinity", "to_negative_infinity")
|
|
|
|
fds = {
|
|
a: {
|
|
b: {
|
|
c: open(f'out/{a}/{b}/{c}.tsv', 'w')
|
|
for c in ROUND_TYPES
|
|
}
|
|
for b in TEST_TYPES
|
|
}
|
|
for a in TYPES
|
|
}
|
|
|
|
try:
|
|
with open('all_u.tsv') as f:
|
|
for line in f:
|
|
q = line.split('\t')[0].split()
|
|
ft = 'half' if q[0] == 'h' else 'single'
|
|
rt = ''
|
|
op = 'prn' if len(q) == 3 else q[2]
|
|
match q[1]:
|
|
case '0':
|
|
rt = 'to_zero'
|
|
case '1':
|
|
rt = 'to_nearest_even'
|
|
case '2':
|
|
rt = 'to_positive_infinity'
|
|
case '3':
|
|
rt = 'to_negative_infinity'
|
|
match op:
|
|
case '+': op = 'add'
|
|
case '-': op = 'sub'
|
|
case '*': op = 'mul'
|
|
case '/': op = 'div'
|
|
fds[ft][op][rt].write(line)
|
|
finally:
|
|
for a in fds:
|
|
for b in fds[a]:
|
|
for c in fds[a][b]:
|
|
fds[a][b][c].close()
|