|
@@ -1,6 +1,7 @@
|
|
|
import time
|
|
|
import modelverse_jit.jit as jit
|
|
|
import modelverse_jit.tree_ir as tree_ir
|
|
|
+import modelverse_jit.cfg_ir as cfg_ir
|
|
|
import modelverse_jit.runtime as jit_runtime
|
|
|
|
|
|
BINARY_INTRINSICS = {
|
|
@@ -279,6 +280,18 @@ MISC_INTRINSICS = {
|
|
|
'log' : __log
|
|
|
}
|
|
|
|
|
|
+MISC_CFG_INTRINSICS = {
|
|
|
+ # State creation
|
|
|
+ 'create_node' :
|
|
|
+ lambda original_def:
|
|
|
+ original_def.redefine(
|
|
|
+ cfg_ir.CreateNode(original_def.insert_before(cfg_ir.Literal(None)))),
|
|
|
+ 'create_value' :
|
|
|
+ lambda original_def, a:
|
|
|
+ original_def.redefine(
|
|
|
+ cfg_ir.CreateNode(original_def.insert_before(cfg_ir.Read(a))))
|
|
|
+}
|
|
|
+
|
|
|
def register_time_intrinsic(target_jit):
|
|
|
"""Registers the time() intrinsic with the given JIT."""
|
|
|
import_name = target_jit.import_value(time.time, 'time')
|
|
@@ -299,5 +312,7 @@ def register_intrinsics(target_jit):
|
|
|
target_jit.register_cast_intrinsic(key, value)
|
|
|
for (key, value) in MISC_INTRINSICS.items():
|
|
|
target_jit.register_intrinsic(key, value)
|
|
|
+ for (key, value) in MISC_CFG_INTRINSICS.items():
|
|
|
+ target_jit.register_cfg_intrinsic(key, value)
|
|
|
|
|
|
register_time_intrinsic(target_jit)
|