open Op;; (* Attempt at modeling SweRV EH1 [| issues ; LSU ; multiplier ; divider |] *) let resource_bounds = [| 2 ; 1; 1; 2 |];; let latency_of_op (op : operation) (nargs : int) = match op with | Omul | Omulhs | Omulhu | Omull | Omullhs | Omullhu -> 3 | Odiv | Odivu | Odivl | Odivlu -> 16 | _ -> 1;; let resources_of_op (op : operation) (nargs : int) = match op with | Omul | Omulhs | Omulhu | Omull | Omullhs | Omullhu -> [| 1 ; 0 ; 1; 0 |] | Odiv | Odivu | Odivl | Odivlu -> [| 0 ; 0; 0; 1 |] | _ -> [| 1; 0; 0; 0 |];; let resources_of_cond (cond : condition) (nargs : int) = [| 1; 0; 0; 0 |];; let latency_of_load trap chunk (addr : addressing) (nargs : int) = 3;; let latency_of_call _ _ = 6;; let resources_of_load trap chunk addressing nargs = [| 1; 1; 0; 0 |];; let resources_of_store chunk addressing nargs = [| 1; 1; 0; 0 |];; let resources_of_call _ _ = resource_bounds;; let resources_of_builtin _ = resource_bounds;;