3 # Copyright (c) 2020 Peter Hsu. All Rights Reserved. See LICENCE file for details.
10 FPdef
= open('FPoperations.def', 'r')
11 f
= open('caveat_fp.h', 'w')
13 if sys
.argv
[1] == 'soft':
14 f
.write('#define SOFT_FP\n')
15 elif sys
.argv
[1] == 'hard':
16 f
.write('// Do not define SOFT_FP\n')
18 print('Bad Argument', sys
.argv
[1])
20 f
.write('#ifndef NO_FP_MACROS\n')
23 line
= line
.rstrip('\r\n')
25 if line
== '' or line
[0] != '@':
27 (macro
, rm
, fpx
, soft
, type, hard
) = re
.split('\t+', line
)
29 macro_dyn
= re
.sub('\(\s*rm,\s*', '_dyn(', macro
)
30 # funcs = [ 'f32', 'f64', 'nf32', 'nf64', 'i32', 'ui32', 'i64', 'ui64' ]
32 # soft = soft.replace('.'+x, '.'+x+'()')
33 # funcs = [ 'l', 'ul', 'i', 'ui', 'd', 'f' ]
35 # hard = hard.replace('.'+x, '.'+x)
36 # hard = hard.replace('.'+x, '.'+x+'()')
37 if (sys
.argv
[1] == 'soft'):
41 rrm
= ' SRM(cpu->state.fcsr.rmode);'
44 f
.write('#define {:s}{:s} {:s};{:s}{:s}\n'.format(macro
, srm
, soft
, fpx
, rrm
))
46 f
.write('#define {:s} {:s};{:s}\n'.format(macro_dyn
, soft
, fpx
))
47 elif (sys
.argv
[1] == 'hard'):
48 (srm
, rrm
, fpx
) = ('', '', '')
54 f
.write('#define {:s}{:s} {:s};{:s}{:s}\n'.format(macro
, srm
, hard
, fpx
, rrm
))
56 f
.write('#define {:s} {:s};{:s}\n'.format(macro_dyn
, hard
, fpx
))