Introduce predicates.

Predcates are boolean functions. There will be ISA predicates and instruction
predicates.

The ISA predicates will be turned into member functions on the generated Flags
structs.
This commit is contained in:
Jakob Stoklund Olesen
2016-08-11 14:22:23 -07:00
parent aeb376227e
commit 8457f67e34
3 changed files with 121 additions and 16 deletions

View File

@@ -3,13 +3,17 @@ RISC-V settings.
"""
from cretonne import SettingGroup, BoolSetting
from cretonne.predicates import And
import cretonne.settings as shared
from defs import isa
isa.settings = SettingGroup('riscv')
isa.settings = SettingGroup('riscv', parent=shared.group)
supports_m = BoolSetting("CPU supports the 'M' extension (mul/div)")
supports_a = BoolSetting("CPU supports the 'A' extension (atomics)")
supports_f = BoolSetting("CPU supports the 'F' extension (float)")
supports_d = BoolSetting("CPU supports the 'D' extension (double)")
full_float = And(shared.enable_simd, supports_f, supports_d)
isa.settings.close(globals())