diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e746ce1f..ba92534c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,7 +3,7 @@ name: Test partial eval on: push: branches: - - partial_eval + - partial_eval pull_request: types: [] workflow_dispatch: @@ -45,17 +45,29 @@ jobs: offline: runs-on: ubuntu-latest + env: + PREFIX: /tmp/prefix + DUNE_INSTALL_PREFIX: /tmp/prefix steps: - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v25 - - run: echo 'preparing nix shell environment' - - run: dune build --profile release -j4 - - run: echo ':gen A64 aarch64_* ocaml false offlineASL' | OCAMLRUNPARAM=b dune exec asli + - run: | + echo 'preparing nix shell environment' + set -u + mkdir -p "$DUNE_INSTALL_PREFIX" + # echo "OCAMLPATH=$DUNE_INSTALL_PREFIX/lib:$OCAMLPATH" | tee -a "$GITHUB_ENV" + # ^ note: the nix shell would override this external variable + + - run: dune build -p asli -j4 --profile=release + + - run: dune install -p asli --profile=release + + - run: 'OCAMLPATH=$PREFIX/lib:$OCAMLPATH PATH=$PREFIX/bin:$PATH dune build -p aslp_offline -j4' - - run: dune build offlineASL -j4 + - run: dune install -p aslp_offline - run: dune build @offline-coverage -j4 diff --git a/README.md b/README.md index b61345ed..d89aa97f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # *ASLp* - ASL Partial Evaluator -This forks ASLi to extract usable semantics from the -architecture specifications. -The semantics produced are in ASL but are reduced to contain -only simple control flow and scalar types, +This forks ASLi to extract usable semantics from the +architecture specifications. +The semantics produced are in ASL but are reduced to contain +only simple control flow and scalar types, for use in further static analysis. ## Introduction @@ -29,10 +29,10 @@ To build and run the ASL interpreter, you will need: * odoc - OCaml documentation generator (optional) * dune - OCaml build system * menhir - parser generator tool - * ott - tool for defining language grammars and semantics + * ott - tool for defining language grammars and semantics * linenoise - OCaml line editing library * pprint - OCaml pretty-printing library - * z3 - OCaml bindings for the Z3 SMT solver + * z3 - OCaml bindings for the Z3 SMT solver * zarith - OCaml multiprecision arithmetic library @@ -144,11 +144,28 @@ these steps will install the package in a location discoverable by opam and dune After installing dependencies and testing the build, run these commands in this directory: ``` - opam pin . -k path - opam install . + dune build + dune install -p asli ``` Once complete, you can verify the package is installed by running `ocamlfind query asli`. +#### ASLp Offline OCaml lifter + +If you want to simultaneously build ASLp and use this version to generate the lifter, +use `dune build @offline`. +Be aware that this might re-use a cached offline lifter, even if ASLp code has changed. +To clean the cached lifters, use `rm -v ./_build/default/*/marshalled-offline-lifter-*`. + +To build the offline lifter using previously compiled asli (e.g. as installed through `opam pin` as above), +Then, use: +```bash +dune build -p aslp_offline +dune install -p aslp_offline +``` +Note: this uses the _installed_ copy of ASLp to generate the offline lifter. +Basically, `-p` acts as if all packages other than the one listed +do not exist in this dune project, forcing it to look elsewhere. +This can be useful when building and installing packages individually. ### Using ASL lexer @@ -206,7 +223,7 @@ ASLi> ``` LLVM can be used to obtain the bytecode for a particular instruction mnemonic: ```bash -$ echo 'add x1, x2, x3, LSL 4' | +$ echo 'add x1, x2, x3, LSL 4' | clang -x assembler -target aarch64 - -c -o/dev/stdout | llvm-objdump - -d --section=.text | tail -n1 @@ -274,12 +291,12 @@ For the coverage tests, the tests are simple diff tests against an expected outp In both cases, dune will report test failures as a difference against the expected output. [`dune promote`](https://dune.readthedocs.io/en/latest/concepts/promotion.html) can be used to update the expected files with the output from the latest run. - + #### Differential testing The `:coverage` command is used to test equivalence of the partial evaluator and the interpreter. It takes a regular expression of an instruction group, then generates and evaluates the partially evaluated -ASL as well as the original ASL and compares the final states. +ASL as well as the original ASL and compares the final states. Instruction groups can be found in the [mra_tools/arch/arch_instrs.asl](mra_tools/arch/arch_instrs.asl) file. ``` ASLi> :coverage A64 aarch64_integer.+ @@ -295,7 +312,7 @@ ASLi> :coverage A64 aarch64_integer.+ [...] ``` -"OK" indicates the machine state after both executions are the same, +"OK" indicates the machine state after both executions are the same, as we would expect if the partial evaluation is correct. UNDEFINED means that particular bytecode is an undefined case in the architecture. If an exception occurs somewhere else in the process, that will be reported as well. @@ -304,9 +321,9 @@ If an exception occurs somewhere else in the process, that will be reported as w - Lam, K., & Coughlin, N. (2023). Lift-off: Trustworthy ARMv8 semantics from formal specifications. -In A. Nadel & K. Y. Rozier (Eds.), +In A. Nadel & K. Y. Rozier (Eds.), _Proceedings of the 23rd Conference on Formal Methods in Computer-Aided Design – FMCAD 2023_ -(pp. 274–283). +(pp. 274–283). TU Wien Academic Press. [10.34727/2023/isbn.978-3-85448-060-0_36](https://doi.org/10.34727/2023/isbn.978-3-85448-060-0_36) diff --git a/asli.opam b/asli.opam index c36f30e1..7a03414f 100644 --- a/asli.opam +++ b/asli.opam @@ -10,13 +10,13 @@ interactive execution of ASL statements and expressions, executing opcodes one at a time, loading ELF files and executing Arm binaries. """ -maintainer: ["Alastair Reid "] -authors: ["Alastair Reid"] +maintainer: ["UQ-PAC"] +authors: ["UQ-PAC"] license: "BSD-3-Clause" -homepage: "https://github.com/alastairreid/asl-interpreter" -bug-reports: "https://github.com/alastairreid/asl-interpreter/issues" +homepage: "https://github.com/UQ-PAC/aslp" +bug-reports: "https://github.com/UQ-PAC/aslp/issues" depends: [ - "dune" {>= "2.8"} + "dune" {>= "2.9"} "ocaml" {>= "4.14"} "menhir" {build} "ott" {build & >= "0.31"} @@ -41,9 +41,11 @@ build: [ name "-j" jobs + "--promote-install-files=false" "@install" "@runtest" {with-test} "@doc" {with-doc} ] + ["dune" "install" "-p" name "--create-install-files" name] ] -dev-repo: "git+https://github.com/alastairreid/asl-interpreter.git" +dev-repo: "git+https://github.com/UQ-PAC/aslp.git" diff --git a/aslp_offline.opam b/aslp_offline.opam new file mode 100644 index 00000000..5a665665 --- /dev/null +++ b/aslp_offline.opam @@ -0,0 +1,33 @@ +# This file is generated by dune, edit dune-project instead +opam-version: "2.0" +version: "0.2.0" +synopsis: "AArch64 Offline lifter" +description: "" +maintainer: ["UQ-PAC"] +authors: ["UQ-PAC"] +license: "BSD-3-Clause" +homepage: "https://github.com/UQ-PAC/aslp" +bug-reports: "https://github.com/UQ-PAC/aslp/issues" +depends: [ + "dune" {>= "2.9"} + "ocaml" {>= "4.14"} + "asli" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "--promote-install-files=false" + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] + ["dune" "install" "-p" name "--create-install-files" name] +] +dev-repo: "git+https://github.com/UQ-PAC/aslp.git" diff --git a/aslp_offline_jsoo.opam b/aslp_offline_jsoo.opam new file mode 100644 index 00000000..1f5f86dc --- /dev/null +++ b/aslp_offline_jsoo.opam @@ -0,0 +1,37 @@ +# This file is generated by dune, edit dune-project instead +opam-version: "2.0" +version: "0.2.0" +synopsis: "AArch64 Offline lifter javascript library" +description: "" +maintainer: ["UQ-PAC"] +authors: ["UQ-PAC"] +license: "BSD-3-Clause" +homepage: "https://github.com/UQ-PAC/aslp" +bug-reports: "https://github.com/UQ-PAC/aslp/issues" +depends: [ + "dune" {>= "2.9"} + "ocaml" {>= "4.14"} + "aslp_offline" + "asli" + "js_of_ocaml" + "js_of_ocaml-ppx" + "zarith_stubs_js" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "--promote-install-files=false" + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] + ["dune" "install" "-p" name "--create-install-files" name] +] +dev-repo: "git+https://github.com/UQ-PAC/aslp.git" diff --git a/bin/asli.ml b/bin/asli.ml index 31b91653..b2c1c14c 100644 --- a/bin/asli.ml +++ b/bin/asli.ml @@ -42,7 +42,7 @@ let help_msg = [ {|:sem Decode and print opcode semantics|}; {|:ast [file] Decode and write opcode semantics to stdout or a file, in a structured ast format|}; {|:gen Generate an offline lifter using the given backend|}; - {| [pc-option] [backend] [dir]|}; + {| [backend] [pc-option] [dir]|}; {|:project Execute ASLi commands in |}; {|:q :quit Exit the interpreter|}; {|:run Execute instructions|}; @@ -199,8 +199,8 @@ let rec process_command (tcenv: TC.Env.t) (cpu: Cpu.cpu) (fname: string) (input0 (Dis.dis_decode_entry cpu.env cpu.denv decoder op); Option.iter close_out chan_opt | ":gen" :: iset :: id :: rest when List.length rest <= 3 -> - let pc_option = Option.value List.(nth_opt rest 1) ~default:"false" in let backend_str = Option.value List.(nth_opt rest 0) ~default:"ocaml" in + let pc_option = Option.value List.(nth_opt rest 1) ~default:"false" in Printf.printf "Generating lifter for %s %s with pc option %s using %s backend\n" iset id pc_option backend_str; let pc_option = match String.lowercase_ascii pc_option with diff --git a/bin/dune b/bin/dune index 7b572c03..4838b906 100644 --- a/bin/dune +++ b/bin/dune @@ -2,6 +2,7 @@ (executable (name asli) (public_name asli) + (package asli) (modes exe byte) (modules asli) (flags (-cclib -lstdc++)) @@ -11,6 +12,7 @@ (executable (name server) (public_name aslp-server) + (package asli) (modes exe) (modules server) (flags (-cclib -lstdc++)) @@ -36,15 +38,28 @@ (executable (name offline_coverage) (public_name asloff-coverage) + (package aslp_offline) (modes exe) (modules offline_coverage) (flags (-cclib -lstdc++)) - (libraries asli.libASL offlineASL)) + (libraries asli.libASL aslp_offline.aarch64)) (executable (name offline_sem) (public_name asloff-sem) + (package aslp_offline) (modes exe) (modules offline_sem) (flags (-cclib -lstdc++)) - (libraries asli.libASL offlineASL)) + (libraries asli.libASL aslp_offline.aarch64 aslp_offline.pc_aarch64)) + + +(executable + (name offline_js) + (modes js) + (modules offline_js) + (libraries asli.libASL-stage0 aslp_offline.aarch64 + zarith_stubs_js + ) + (preprocess (pps js_of_ocaml-ppx)) +) diff --git a/bin/offline_coverage.ml b/bin/offline_coverage.ml index a69e581d..20272dec 100644 --- a/bin/offline_coverage.ml +++ b/bin/offline_coverage.ml @@ -12,7 +12,7 @@ let () = Printexc.register_printer let op_dis (op: int): stmt list opresult = let bv = Primops.prim_cvt_int_bits (Z.of_int 32) (Z.of_int op) in try - let stmts = OfflineASL.Offline.run bv in + let stmts = OfflineASL.Offline.run bv in Result.Ok stmts with | e -> Result.Error (Op_DisFail e) diff --git a/bin/offline_js.ml b/bin/offline_js.ml new file mode 100644 index 00000000..4b7960d0 --- /dev/null +++ b/bin/offline_js.ml @@ -0,0 +1,22 @@ +open LibASL_stage0 +open Asl_utils +open Asl_ast +open Js_of_ocaml + +let dis (opcode: string) : stmt list = + let op = Z.of_string opcode in + let bv = Primops.prim_cvt_int_bits (Z.of_int 32) op in + OfflineASL.Offline.run bv + + +(* +import("offline_js.bc.js"); +offlineLifter.dis(opcode); +*) + +let () = Js.export "offlineLifter" + begin object%js + method dis x = List.map (fun s -> pp_stmt s |> Js.string) (dis (Js.to_string x)) + end end + + diff --git a/bin/offline_sem.ml b/bin/offline_sem.ml index 54b8ac38..a8cfaf6f 100644 --- a/bin/offline_sem.ml +++ b/bin/offline_sem.ml @@ -2,14 +2,19 @@ open LibASL open Asl_ast open Asl_utils -let run (opcode: string) = +let run (opcode: string) (pc: int option) = let op = Z.of_string opcode in let bv = Primops.prim_cvt_int_bits (Z.of_int 32) op in - let stmts = OfflineASL.Offline.run bv in + let stmts = match pc with + | None -> OfflineASL.Offline.run bv + | Some x -> OfflineASL_pc.Offline.run ~pc:x bv in List.iter (fun s -> Printf.printf "%s\n" (pp_stmt s)) stmts let opt_instr = ref [] -let options = Arg.align ([]) +let opt_pc = ref (-1) +let options = Arg.align ([ + ( "--pc", Arg.Set_int opt_pc , "set program counter (does nothing if lifter generated does not support it)"); +]) let usage_msg = "" let _ = @@ -18,6 +23,7 @@ let _ = usage_msg let main () = - List.map (fun instr -> run instr) !opt_instr + let pc = if (!opt_pc <> -1) then Some !opt_pc else None in + List.map (fun instr -> run instr pc) !opt_instr let _ = main() diff --git a/bin/server.ml b/bin/server.ml index 759eee24..22f427fe 100644 --- a/bin/server.ml +++ b/bin/server.ml @@ -33,8 +33,6 @@ let get_reply (jsonin: string) : Cohttp.Code.status_code * string = (*let json = Yojson.Safe.from_string jsonin in *) let make_reply code tail = (code, Yojson.Safe.to_string (`Assoc (["instruction", `String jsonin] @ tail))) in - Printf.printf "Disassembling '%s'\n" jsonin; - flush stdout; match (eval_instr jsonin) with | exception e -> make_reply `Internal_server_error ["error", `String (Printexc.to_string e)] | enc, x -> make_reply `OK [ "encoding", `String enc; "semantics", `String x; ] diff --git a/dune b/dune index 6347f813..d85c085d 100644 --- a/dune +++ b/dune @@ -1,4 +1,4 @@ -(alias +(alias (name asl_files) (deps prelude.asl @@ -22,4 +22,13 @@ (alias (name default) - (deps (package asli) (alias install))) + (deps (package asli) asli.install)) + + +(alias + (name aslp_offline_jsoo) + (deps (package aslp_offline_jsoo ) bin/offline_js.bc.js)) + +(alias + (name offline) + (deps (package aslp_offline) aslp_offline.install)) diff --git a/dune-project b/dune-project index ec36847e..751e75d3 100644 --- a/dune-project +++ b/dune-project @@ -1,4 +1,4 @@ -(lang dune 2.8) +(lang dune 2.9) (name asli) (version 0.2.0) @@ -31,12 +31,36 @@ ) ) +(package + (name aslp_offline) + (synopsis "AArch64 Offline lifter") + (description "" ) + (depends + ("ocaml" (>= "4.14")) + "asli" + ) +) + +(package + (name aslp_offline_jsoo) + (synopsis "AArch64 Offline lifter javascript library") + (description "" ) + (depends + ("ocaml" (>= "4.14")) + aslp_offline + asli + js_of_ocaml + js_of_ocaml-ppx + zarith_stubs_js + ) +) + (license BSD-3-Clause) -(authors "Alastair Reid") -(maintainers "Alastair Reid ") -(source (github alastairreid/asl-interpreter)) -(bug_reports "https://github.com/alastairreid/asl-interpreter/issues") -(homepage "https://github.com/alastairreid/asl-interpreter") +(authors "UQ-PAC") +(maintainers "UQ-PAC") +(source (github UQ-PAC/aslp)) +(bug_reports "https://github.com/UQ-PAC/aslp/issues") +(homepage "https://github.com/UQ-PAC/aslp") ; (documentation ...) (generate_opam_files true) diff --git a/libASL/cpp_backend.ml b/libASL/cpp_backend.ml index 76c7f25b..1f5c1c0f 100644 --- a/libASL/cpp_backend.ml +++ b/libASL/cpp_backend.ml @@ -1,5 +1,6 @@ open Asl_ast open Asl_utils +open Gen_backend (**************************************************************** * Write State @@ -569,3 +570,7 @@ let run dfn dfnsig tests fns root = Printf.eprintf "Warning: cpp gen directory '%s' is missing build system files. These might need to be copied manually.\n\n" root; () + +module CppBackend : Backend = struct + let run ~(config:conf) dfn dfnsig tests fns = run dfn dfnsig tests fns config.output_directory +end diff --git a/libASL/cpu.ml b/libASL/cpu.ml index ec28aa4f..e649940f 100644 --- a/libASL/cpu.ml +++ b/libASL/cpu.ml @@ -67,15 +67,16 @@ let mkCPU (env : Eval.Env.t) (denv: Dis.env): cpu = (* Build the symbolic lifter *) let (decoder_id,decoder_fnsig,tests,instrs) = Symbolic_lifter.run_marshal include_pc iset pat env in - let run_gen_backend : gen_function = + let run_gen_backend = match backend with - | Ocaml -> Ocaml_backend.run - | Cpp -> Cpp_backend.run - | Scala -> Scala_backend.run + | Ocaml -> Ocaml_backend.OcamlBackend.run + | Cpp -> Cpp_backend.CppBackend.run + | Scala -> Scala_backend.ScalaBackend.run in + let config : Gen_backend.conf = {use_pc=include_pc; output_directory=dir} in (* Build backend program *) - run_gen_backend decoder_id decoder_fnsig tests instrs dir + run_gen_backend ~config decoder_id decoder_fnsig tests instrs in { diff --git a/libASL/dune b/libASL/dune index 80dcf748..d4851b93 100644 --- a/libASL/dune +++ b/libASL/dune @@ -27,7 +27,7 @@ (name libASL_stage0) (public_name asli.libASL-stage0) (flags (:standard -w -27)) - (modules asl_ast asl_parser asl_parser_pp asl_utils asl_visitor visitor utils) + (modules asl_ast asl_parser asl_parser_pp asl_utils asl_visitor visitor utils value primops symbolic) (libraries pprint (re_export zarith))) (library @@ -35,9 +35,9 @@ (public_name asli.libASL-stage1) (flags (:standard -w -27 -cclib -lstdc++ -open LibASL_stage0)) - (modules cpu dis elf eval - lexer lexersupport loadASL monad primops rws symbolic tcheck testing transforms value - rASL_check + (modules + gen_backend cpu dis elf eval + lexer lexersupport loadASL monad rws tcheck testing transforms rASL_check symbolic_lifter decoder_program call_graph req_analysis offline_transform dis_tc offline_opt ocaml_backend @@ -45,7 +45,7 @@ scala_backend arm_env pretransforms flags ) - (preprocessor_deps (alias ../asl_files) (alias cpp_backend_files)) + (preprocessor_deps (alias ../asl_files) (alias cpp_backend_files) ../offlineASL/template_offline_utils.ml) (preprocess (pps ppx_blob)) (libraries libASL_stage0 libASL_support str mlbdd)) diff --git a/libASL/gen_backend.ml b/libASL/gen_backend.ml new file mode 100644 index 00000000..01bea2ea --- /dev/null +++ b/libASL/gen_backend.ml @@ -0,0 +1,14 @@ + + +module AST = Asl_ast +open Asl_utils + + +type conf = { + use_pc : bool; + output_directory: string; +} + +module type Backend = sig + val run : config:conf -> AST.ident -> Eval.fun_sig -> Eval.fun_sig Bindings.t -> Eval.fun_sig Bindings.t -> unit +end diff --git a/libASL/ocaml_backend.ml b/libASL/ocaml_backend.ml index 5579ef9e..282aa6e5 100644 --- a/libASL/ocaml_backend.ml +++ b/libASL/ocaml_backend.ml @@ -1,5 +1,6 @@ open Asl_ast open Asl_utils +open Gen_backend (**************************************************************** * Write State @@ -65,8 +66,15 @@ let write_preamble opens st = Printf.fprintf st.oc "open %s\n" s) opens; Printf.fprintf st.oc "\n" -let write_epilogue fid st = - Printf.fprintf st.oc "let run enc =\n reset_ir ();\n %s enc;\n get_ir ()\n" (name_of_ident fid) +let write_epilogue use_pc fid st = + let conv_pc = "let pc = (mkBits (Z.of_int 64) (Z.of_int pc)) in" in + let dis_call = (match use_pc with + | true -> Printf.sprintf "%s\n %s enc pc" conv_pc + | false -> Printf.sprintf "%s enc" + ) (name_of_ident fid) + in + let pc_arg = if use_pc then " ~(pc:int)" else "" in + Printf.fprintf st.oc "let run%s enc =\n reset_ir ();\n %s;\n get_ir ()\n" pc_arg dis_call let write_line s st = let padding = String.concat "" (List.init st.depth (fun _ -> " ")) in @@ -333,8 +341,9 @@ let write_fn name (ret_tyo,_,targs,args,_,body) st = * Directory Setup ****************************************************************) -let init_st oc = { depth = 0; skip_seq = false; oc ; ref_vars = IdentSet.empty } +let init_st oc = { depth = 0; skip_seq = false; oc ; ref_vars = IdentSet.empty } let global_deps = ["Offline_utils"] +let offline_utils_file = [%blob "../offlineASL/template_offline_utils.ml"] (* Write an instruction file, containing just the behaviour of one instructions *) let write_instr_file fn fnsig dir = @@ -359,36 +368,86 @@ let write_test_file tests dir = m (* Write the decoder file - should depend on all of the above *) -let write_decoder_file fn fnsig deps dir = +let write_decoder_file use_pc fn fnsig deps dir = let m = "offline" in let path = dir ^ "/" ^ m ^ ".ml" in let oc = open_out path in let st = init_st oc in write_preamble (global_deps @ deps) st; write_fn fn fnsig st; - write_epilogue fn st; + write_epilogue use_pc fn st; close_out oc; - m + m + +let write_new_dune_file use_pc files dir : unit = + let target_gen_files = String.concat "" @@ List.map (fun k -> + Printf.sprintf " %s.ml\n" k + ) files in + let oc = open_out (dir ^ "/dune.generated.new") in + Printf.fprintf oc "; AUTO-GENERATED BY OCAML BACKEND\n"; + Printf.fprintf oc "(rule + (targets + dune.generated.new\n%s + ) + (deps gen-command) + (action (with-stdin-from gen-command (run asli))) +)" target_gen_files ; + Printf.fprintf oc "\n\n"; + let name = if use_pc then "offlineASL_pc" else "offlineASL" in + Printf.fprintf oc " + (library + (name %s) + (public_name aslp_offline.%s) + (flags + (:standard -w -27 -w -33 -cclib -lstdc++)) + (modules \n" + name + (if use_pc then "pc_aarch64" else "aarch64") ; + List.iter (fun k -> + Printf.fprintf oc " %s\n" k + ) (files); + Printf.fprintf oc " ) + (libraries asli.libASL-stage0))" ; + Printf.fprintf oc "\n(alias (name default) (deps (package aslp_offline) ../aslp_offline.install))" + (* Write the dune build file *) -let write_dune_file files dir = - let oc = open_out (dir ^ "/dune") in +(* XXX: this function is not used anymore? *) +let write_dune_file use_pc files dir = + let oc = open_out (dir ^ "/dune.inc") in Printf.fprintf oc "; AUTO-GENERATED BY OCAML BACKEND (library (name offlineASL) + (public_name aslp_offline.%s) (flags (:standard -w -27 -w -33 -cclib -lstdc++)) - (modules \n"; + (modules \n" + (if use_pc then "pc_aarch64" else "aarch64") ; List.iter (fun k -> Printf.fprintf oc " %s\n" k ) files; Printf.fprintf oc " ) - (libraries asli.libASL))"; + (libraries asli.libASL-stage0))"; + close_out oc + +let write_ibi dir = + let oc = open_out (dir ^ "/Offline_utils.ml") in + output_string oc offline_utils_file ; close_out oc (* Write all of the above, expecting offline_utils.ml to already be present in dir *) -let run dfn dfnsig tests fns dir = +let run config dfn dfnsig tests fns = + let dir = config.output_directory in let files = Bindings.fold (fun fn fnsig acc -> (write_instr_file fn fnsig dir)::acc) fns [] in let files = (write_test_file tests dir)::files in - let decoder = write_decoder_file dfn dfnsig files dir in - write_dune_file (decoder::files@global_deps) dir + let decoder = write_decoder_file config.use_pc dfn dfnsig files dir in + write_ibi dir ; + try + write_new_dune_file config.use_pc (decoder::files@global_deps) dir + with + | Sys_error _ as e -> Printf.eprintf "failed to write dune file\n%s" (Printexc.to_string e); Printexc.print_backtrace stderr + +module OcamlBackend : Backend = struct + let run ~(config:conf) dfn dfnsig tests fns = run config dfn dfnsig tests fns +end + diff --git a/libASL/scala_backend.ml b/libASL/scala_backend.ml index 06b69819..e089bfe7 100644 --- a/libASL/scala_backend.ml +++ b/libASL/scala_backend.ml @@ -5,7 +5,7 @@ open Asl_utils open AST open Asl_visitor -open Value +open Gen_backend (* For splitting up functions we use type to indicate which parameters are passed by reference. *) @@ -845,3 +845,6 @@ let run (dfn : ident) (dfnsig : ty option * 'a * ident list * ident list * 'b * write_decoder_file dfn (lift_fsig dfnsig) files dir st |> ignore ; () +module ScalaBackend : Backend = struct + let run ~(config:conf) dfn dfnsig tests fns = run dfn dfnsig tests fns config.output_directory +end diff --git a/libASL/symbolic_lifter.ml b/libASL/symbolic_lifter.ml index d6ff5a88..ab19b67d 100644 --- a/libASL/symbolic_lifter.ml +++ b/libASL/symbolic_lifter.ml @@ -418,6 +418,7 @@ let run include_pc iset pat env : offline_result = let run_marshal include_pc iset pat env : offline_result = let fname = Printf.sprintf "marshalled-offline-lifter-%x" + (*FIXME: I don't think this is working as expected *) (Hashtbl.seeded_hash 1234 (Printf.sprintf "%b %s %s" include_pc iset pat)) in if (Sys.file_exists fname) @@ -431,5 +432,6 @@ let run_marshal include_pc iset pat env : offline_result = else let r: offline_result = run include_pc iset pat env in let oc = open_out_bin fname in + Printf.printf "Writing marshalled lifter (pc: %b iset: %s pat: %s): %s\n" include_pc iset pat fname; Marshal.to_channel oc r []; close_out oc; r diff --git a/offlineASL-pc/dune b/offlineASL-pc/dune new file mode 100644 index 00000000..0d0c3424 --- /dev/null +++ b/offlineASL-pc/dune @@ -0,0 +1,4 @@ +(include dune.generated) + +(include ../offlineASL/dune.bootstrap) + diff --git a/offlineASL-pc/dune.generated b/offlineASL-pc/dune.generated new file mode 100644 index 00000000..eacac52a --- /dev/null +++ b/offlineASL-pc/dune.generated @@ -0,0 +1,760 @@ +; AUTO-GENERATED BY OCAML BACKEND +(rule + (targets + dune.generated.new + offline.ml + decode_tests.ml + aarch64_vector_transfer_vector_table.ml + aarch64_vector_transfer_vector_permute_zip.ml + aarch64_vector_transfer_vector_permute_unzip.ml + aarch64_vector_transfer_vector_permute_transpose.ml + aarch64_vector_transfer_vector_insert.ml + aarch64_vector_transfer_vector_extract.ml + aarch64_vector_transfer_vector_cpy_dup_sisd.ml + aarch64_vector_transfer_vector_cpy_dup_simd.ml + aarch64_vector_transfer_integer_move_unsigned.ml + aarch64_vector_transfer_integer_move_signed.ml + aarch64_vector_transfer_integer_insert.ml + aarch64_vector_transfer_integer_dup.ml + aarch64_vector_shift_right_sisd.ml + aarch64_vector_shift_right_simd.ml + aarch64_vector_shift_right_narrow_uniform_sisd.ml + aarch64_vector_shift_right_narrow_uniform_simd.ml + aarch64_vector_shift_right_narrow_nonuniform_sisd.ml + aarch64_vector_shift_right_narrow_nonuniform_simd.ml + aarch64_vector_shift_right_narrow_logical.ml + aarch64_vector_shift_right_insert_sisd.ml + aarch64_vector_shift_right_insert_simd.ml + aarch64_vector_shift_left_sisd.ml + aarch64_vector_shift_left_simd.ml + aarch64_vector_shift_left_sat_sisd.ml + aarch64_vector_shift_left_sat_simd.ml + aarch64_vector_shift_left_long.ml + aarch64_vector_shift_left_insert_sisd.ml + aarch64_vector_shift_left_insert_simd.ml + aarch64_vector_shift_conv_int_sisd.ml + aarch64_vector_shift_conv_int_simd.ml + aarch64_vector_shift_conv_float_sisd.ml + aarch64_vector_shift_conv_float_simd.ml + aarch64_vector_reduce_int_max.ml + aarch64_vector_reduce_fp_maxnm_sisd.ml + aarch64_vector_reduce_fp_maxnm_simd.ml + aarch64_vector_reduce_fp_max_sisd.ml + aarch64_vector_reduce_fp_max_simd.ml + aarch64_vector_reduce_fp_add_sisd.ml + aarch64_vector_reduce_fp16_maxnm_sisd.ml + aarch64_vector_reduce_fp16_maxnm_simd.ml + aarch64_vector_reduce_fp16_max_sisd.ml + aarch64_vector_reduce_fp16_max_simd.ml + aarch64_vector_reduce_fp16_add_sisd.ml + aarch64_vector_reduce_add_sisd.ml + aarch64_vector_reduce_add_simd.ml + aarch64_vector_reduce_add_long.ml + aarch64_vector_logical.ml + aarch64_vector_fp16_movi.ml + aarch64_vector_cvt_bf16_vector.ml + aarch64_vector_cvt_bf16_scalar.ml + aarch64_vector_crypto_sm4_sm4enckey.ml + aarch64_vector_crypto_sm4_sm4enc.ml + aarch64_vector_crypto_sm3_sm3tt2b.ml + aarch64_vector_crypto_sm3_sm3tt2a.ml + aarch64_vector_crypto_sm3_sm3tt1b.ml + aarch64_vector_crypto_sm3_sm3tt1a.ml + aarch64_vector_crypto_sm3_sm3ss1.ml + aarch64_vector_crypto_sm3_sm3partw2.ml + aarch64_vector_crypto_sm3_sm3partw1.ml + aarch64_vector_crypto_sha512_sha512su1.ml + aarch64_vector_crypto_sha512_sha512su0.ml + aarch64_vector_crypto_sha512_sha512h2.ml + aarch64_vector_crypto_sha512_sha512h.ml + aarch64_vector_crypto_sha3op_sha256_sched1.ml + aarch64_vector_crypto_sha3op_sha256_hash.ml + aarch64_vector_crypto_sha3op_sha1_sched0.ml + aarch64_vector_crypto_sha3op_sha1_hash_parity.ml + aarch64_vector_crypto_sha3op_sha1_hash_majority.ml + aarch64_vector_crypto_sha3op_sha1_hash_choose.ml + aarch64_vector_crypto_sha3_xar.ml + aarch64_vector_crypto_sha3_rax1.ml + aarch64_vector_crypto_sha3_eor3.ml + aarch64_vector_crypto_sha3_bcax.ml + aarch64_vector_crypto_sha2op_sha256_sched0.ml + aarch64_vector_crypto_sha2op_sha1_sched1.ml + aarch64_vector_crypto_sha2op_sha1_hash.ml + aarch64_vector_crypto_aes_round.ml + aarch64_vector_crypto_aes_mix.ml + aarch64_vector_bfmmla.ml + aarch64_vector_arithmetic_unary_special_sqrt_fp16.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_int.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_sisd.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_simd.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_float_sisd.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_float_simd.ml + aarch64_vector_arithmetic_unary_special_sqrt.ml + aarch64_vector_arithmetic_unary_special_recip_int.ml + aarch64_vector_arithmetic_unary_special_recip_fp16_sisd.ml + aarch64_vector_arithmetic_unary_special_recip_fp16_simd.ml + aarch64_vector_arithmetic_unary_special_recip_float_sisd.ml + aarch64_vector_arithmetic_unary_special_recip_float_simd.ml + aarch64_vector_arithmetic_unary_special_frecpx_fp16.ml + aarch64_vector_arithmetic_unary_special_frecpx.ml + aarch64_vector_arithmetic_unary_shift.ml + aarch64_vector_arithmetic_unary_rev.ml + aarch64_vector_arithmetic_unary_rbit.ml + aarch64_vector_arithmetic_unary_not.ml + aarch64_vector_arithmetic_unary_fp16_round.ml + aarch64_vector_arithmetic_unary_fp16_conv_int_sisd.ml + aarch64_vector_arithmetic_unary_fp16_conv_int_simd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_sisd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_simd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_sisd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_simd.ml + aarch64_vector_arithmetic_unary_float_xtn_sisd.ml + aarch64_vector_arithmetic_unary_float_xtn_simd.ml + aarch64_vector_arithmetic_unary_float_widen.ml + aarch64_vector_arithmetic_unary_float_round_frint_32_64.ml + aarch64_vector_arithmetic_unary_float_round.ml + aarch64_vector_arithmetic_unary_float_narrow.ml + aarch64_vector_arithmetic_unary_float_conv_int_sisd.ml + aarch64_vector_arithmetic_unary_float_conv_int_simd.ml + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_sisd.ml + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_simd.ml + aarch64_vector_arithmetic_unary_float_conv_float_bulk_sisd.ml + aarch64_vector_arithmetic_unary_float_conv_float_bulk_simd.ml + aarch64_vector_arithmetic_unary_extract_sqxtun_sisd.ml + aarch64_vector_arithmetic_unary_extract_sqxtun_simd.ml + aarch64_vector_arithmetic_unary_extract_sat_sisd.ml + aarch64_vector_arithmetic_unary_extract_sat_simd.ml + aarch64_vector_arithmetic_unary_extract_nosat.ml + aarch64_vector_arithmetic_unary_diff_neg_sat_sisd.ml + aarch64_vector_arithmetic_unary_diff_neg_sat_simd.ml + aarch64_vector_arithmetic_unary_diff_neg_int_sisd.ml + aarch64_vector_arithmetic_unary_diff_neg_int_simd.ml + aarch64_vector_arithmetic_unary_diff_neg_fp16.ml + aarch64_vector_arithmetic_unary_diff_neg_float.ml + aarch64_vector_arithmetic_unary_cnt.ml + aarch64_vector_arithmetic_unary_cmp_int_lessthan_sisd.ml + aarch64_vector_arithmetic_unary_cmp_int_lessthan_simd.ml + aarch64_vector_arithmetic_unary_cmp_int_bulk_sisd.ml + aarch64_vector_arithmetic_unary_cmp_int_bulk_simd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_sisd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_simd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_sisd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_simd.ml + aarch64_vector_arithmetic_unary_cmp_float_lessthan_sisd.ml + aarch64_vector_arithmetic_unary_cmp_float_lessthan_simd.ml + aarch64_vector_arithmetic_unary_cmp_float_bulk_sisd.ml + aarch64_vector_arithmetic_unary_cmp_float_bulk_simd.ml + aarch64_vector_arithmetic_unary_clsz.ml + aarch64_vector_arithmetic_unary_add_saturating_sisd.ml + aarch64_vector_arithmetic_unary_add_saturating_simd.ml + aarch64_vector_arithmetic_unary_add_pairwise.ml + aarch64_vector_arithmetic_binary_uniform_sub_saturating_sisd.ml + aarch64_vector_arithmetic_binary_uniform_sub_saturating_simd.ml + aarch64_vector_arithmetic_binary_uniform_sub_int.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp_sisd.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp_simd.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_shift_sisd.ml + aarch64_vector_arithmetic_binary_uniform_shift_simd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_sisd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_simd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_recps_sisd.ml + aarch64_vector_arithmetic_binary_uniform_recps_simd.ml + aarch64_vector_arithmetic_binary_uniform_recps_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_recps_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_product.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_dotp.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_bfdot.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_accum.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_product.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_upper.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_lower.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_fused.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_complex.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_product.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_fused.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_acc_bf16_long.ml + aarch64_vector_arithmetic_binary_uniform_max_min_single.ml + aarch64_vector_arithmetic_binary_uniform_max_min_pair.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp_2008.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp_1985.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_2008.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_1985.ml + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_usdot.ml + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_mla.ml + aarch64_vector_arithmetic_binary_uniform_logical_bsl_eor.ml + aarch64_vector_arithmetic_binary_uniform_logical_and_orr.ml + aarch64_vector_arithmetic_binary_uniform_div_fp16.ml + aarch64_vector_arithmetic_binary_uniform_div.ml + aarch64_vector_arithmetic_binary_uniform_diff.ml + aarch64_vector_arithmetic_binary_uniform_cmp_int_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_int_simd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp_simd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_simd.ml + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_sisd.ml + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_simd.ml + aarch64_vector_arithmetic_binary_uniform_add_wrapping_pair.ml + aarch64_vector_arithmetic_binary_uniform_add_saturating_sisd.ml + aarch64_vector_arithmetic_binary_uniform_add_saturating_simd.ml + aarch64_vector_arithmetic_binary_uniform_add_halving_truncating.ml + aarch64_vector_arithmetic_binary_uniform_add_halving_rounding.ml + aarch64_vector_arithmetic_binary_uniform_add_fp_complex.ml + aarch64_vector_arithmetic_binary_uniform_add_fp16.ml + aarch64_vector_arithmetic_binary_uniform_add_fp.ml + aarch64_vector_arithmetic_binary_element_mul_long.ml + aarch64_vector_arithmetic_binary_element_mul_int.ml + aarch64_vector_arithmetic_binary_element_mul_high_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_high_simd.ml + aarch64_vector_arithmetic_binary_element_mul_fp_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_fp_simd.ml + aarch64_vector_arithmetic_binary_element_mul_fp16_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_fp16_simd.ml + aarch64_vector_arithmetic_binary_element_mul_double_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_double_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_upper.ml + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_lower.ml + aarch64_vector_arithmetic_binary_element_mul_acc_long.ml + aarch64_vector_arithmetic_binary_element_mul_acc_int.ml + aarch64_vector_arithmetic_binary_element_mul_acc_high_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_high_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_double_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_double_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_complex.ml + aarch64_vector_arithmetic_binary_element_mul_acc_bf16_long.ml + aarch64_vector_arithmetic_binary_element_mat_mul_int_dotp.ml + aarch64_vector_arithmetic_binary_element_dotp.ml + aarch64_vector_arithmetic_binary_element_bfdot.ml + aarch64_vector_arithmetic_binary_disparate_mul_product.ml + aarch64_vector_arithmetic_binary_disparate_mul_poly.ml + aarch64_vector_arithmetic_binary_disparate_mul_double_sisd.ml + aarch64_vector_arithmetic_binary_disparate_mul_double_simd.ml + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_sisd.ml + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_simd.ml + aarch64_vector_arithmetic_binary_disparate_mul_accum.ml + aarch64_vector_arithmetic_binary_disparate_diff.ml + aarch64_vector_arithmetic_binary_disparate_add_sub_wide.ml + aarch64_vector_arithmetic_binary_disparate_add_sub_narrow.ml + aarch64_vector_arithmetic_binary_disparate_add_sub_long.ml + aarch64_udf.ml + aarch64_system_sysops.ml + aarch64_system_register_cpsr.ml + aarch64_system_monitors.ml + aarch64_system_exceptions_runtime_hvc.ml + aarch64_system_exceptions_debug_halt.ml + aarch64_system_exceptions_debug_breakpoint.ml + aarch64_system_barriers_isb.ml + aarch64_system_barriers_dsb.ml + aarch64_system_barriers_dmb.ml + aarch64_memory_vector_single_post_inc.ml + aarch64_memory_vector_single_no_wb.ml + aarch64_memory_vector_multiple_post_inc.ml + aarch64_memory_vector_multiple_no_wb.ml + aarch64_memory_single_simdfp_register.ml + aarch64_memory_single_simdfp_immediate_unsigned.ml + aarch64_memory_single_simdfp_immediate_signed_pre_idx.ml + aarch64_memory_single_simdfp_immediate_signed_post_idx.ml + aarch64_memory_single_simdfp_immediate_signed_offset_normal.ml + aarch64_memory_single_general_register.ml + aarch64_memory_single_general_immediate_unsigned.ml + aarch64_memory_single_general_immediate_signed_pre_idx.ml + aarch64_memory_single_general_immediate_signed_post_idx.ml + aarch64_memory_single_general_immediate_signed_pac.ml + aarch64_memory_single_general_immediate_signed_offset_unpriv.ml + aarch64_memory_single_general_immediate_signed_offset_normal.ml + aarch64_memory_single_general_immediate_signed_offset_lda_stl.ml + aarch64_memory_pair_simdfp_pre_idx.ml + aarch64_memory_pair_simdfp_post_idx.ml + aarch64_memory_pair_simdfp_offset.ml + aarch64_memory_pair_simdfp_no_alloc.ml + aarch64_memory_pair_general_pre_idx.ml + aarch64_memory_pair_general_post_idx.ml + aarch64_memory_pair_general_offset.ml + aarch64_memory_pair_general_no_alloc.ml + aarch64_memory_ordered_rcpc.ml + aarch64_memory_ordered.ml + aarch64_memory_literal_simdfp.ml + aarch64_memory_literal_general.ml + aarch64_memory_exclusive_single.ml + aarch64_memory_exclusive_pair.ml + aarch64_memory_atomicops_swp.ml + aarch64_memory_atomicops_ld.ml + aarch64_memory_atomicops_cas_single.ml + aarch64_memory_atomicops_cas_pair.ml + aarch64_integer_tags_mcsubtag.ml + aarch64_integer_tags_mcsettagarray.ml + aarch64_integer_tags_mcsettagandzeroarray.ml + aarch64_integer_tags_mcinserttagmask.ml + aarch64_integer_tags_mcinsertrandomtag.ml + aarch64_integer_tags_mcgettagarray.ml + aarch64_integer_tags_mcgettag.ml + aarch64_integer_tags_mcaddtag.ml + aarch64_integer_shift_variable.ml + aarch64_integer_pac_strip_hint.ml + aarch64_integer_pac_pacib_hint.ml + aarch64_integer_pac_pacib_dp_1src.ml + aarch64_integer_pac_pacia_hint.ml + aarch64_integer_pac_pacia_dp_1src.ml + aarch64_integer_pac_pacdb_dp_1src.ml + aarch64_integer_pac_pacda_dp_1src.ml + aarch64_integer_pac_autib_hint.ml + aarch64_integer_pac_autib_dp_1src.ml + aarch64_integer_pac_autia_hint.ml + aarch64_integer_pac_autia_dp_1src.ml + aarch64_integer_pac_autdb_dp_1src.ml + aarch64_integer_pac_autda_dp_1src.ml + aarch64_integer_logical_shiftedreg.ml + aarch64_integer_logical_immediate.ml + aarch64_integer_ins_ext_insert_movewide.ml + aarch64_integer_ins_ext_extract_immediate.ml + aarch64_integer_flags_xaflag.ml + aarch64_integer_flags_setf.ml + aarch64_integer_flags_rmif.ml + aarch64_integer_flags_cfinv.ml + aarch64_integer_flags_axflag.ml + aarch64_integer_crc.ml + aarch64_integer_conditional_select.ml + aarch64_integer_conditional_compare_register.ml + aarch64_integer_conditional_compare_immediate.ml + aarch64_integer_bitfield.ml + aarch64_integer_arithmetic_rev.ml + aarch64_integer_arithmetic_rbit.ml + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddresssetflags.ml + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddress.ml + aarch64_integer_arithmetic_mul_widening_64_128hi.ml + aarch64_integer_arithmetic_mul_widening_32_64.ml + aarch64_integer_arithmetic_mul_uniform_add_sub.ml + aarch64_integer_arithmetic_div.ml + aarch64_integer_arithmetic_cnt.ml + aarch64_integer_arithmetic_address_pc_rel.ml + aarch64_integer_arithmetic_add_sub_shiftedreg.ml + aarch64_integer_arithmetic_add_sub_immediate.ml + aarch64_integer_arithmetic_add_sub_extendedreg.ml + aarch64_integer_arithmetic_add_sub_carry.ml + aarch64_float_move_fp_select.ml + aarch64_float_move_fp_imm.ml + aarch64_float_convert_int.ml + aarch64_float_convert_fp.ml + aarch64_float_convert_fix.ml + aarch64_float_compare_uncond.ml + aarch64_float_compare_cond.ml + aarch64_float_arithmetic_unary.ml + aarch64_float_arithmetic_round_frint_32_64.ml + aarch64_float_arithmetic_round_frint.ml + aarch64_float_arithmetic_mul_product.ml + aarch64_float_arithmetic_mul_add_sub.ml + aarch64_float_arithmetic_max_min.ml + aarch64_float_arithmetic_div.ml + aarch64_float_arithmetic_add_sub.ml + aarch64_branch_unconditional_register.ml + aarch64_branch_unconditional_immediate.ml + aarch64_branch_unconditional_eret.ml + aarch64_branch_unconditional_dret.ml + aarch64_branch_conditional_test.ml + aarch64_branch_conditional_cond.ml + aarch64_branch_conditional_compare.ml + Offline_utils.ml + + ) + (deps gen-command) + (action (with-stdin-from gen-command (run asli))) +) + + + (library + (name offlineASL_pc) + (public_name aslp_offline.pc_aarch64) + (flags + (:standard -w -27 -w -33 -cclib -lstdc++)) + (modules + offline + decode_tests + aarch64_vector_transfer_vector_table + aarch64_vector_transfer_vector_permute_zip + aarch64_vector_transfer_vector_permute_unzip + aarch64_vector_transfer_vector_permute_transpose + aarch64_vector_transfer_vector_insert + aarch64_vector_transfer_vector_extract + aarch64_vector_transfer_vector_cpy_dup_sisd + aarch64_vector_transfer_vector_cpy_dup_simd + aarch64_vector_transfer_integer_move_unsigned + aarch64_vector_transfer_integer_move_signed + aarch64_vector_transfer_integer_insert + aarch64_vector_transfer_integer_dup + aarch64_vector_shift_right_sisd + aarch64_vector_shift_right_simd + aarch64_vector_shift_right_narrow_uniform_sisd + aarch64_vector_shift_right_narrow_uniform_simd + aarch64_vector_shift_right_narrow_nonuniform_sisd + aarch64_vector_shift_right_narrow_nonuniform_simd + aarch64_vector_shift_right_narrow_logical + aarch64_vector_shift_right_insert_sisd + aarch64_vector_shift_right_insert_simd + aarch64_vector_shift_left_sisd + aarch64_vector_shift_left_simd + aarch64_vector_shift_left_sat_sisd + aarch64_vector_shift_left_sat_simd + aarch64_vector_shift_left_long + aarch64_vector_shift_left_insert_sisd + aarch64_vector_shift_left_insert_simd + aarch64_vector_shift_conv_int_sisd + aarch64_vector_shift_conv_int_simd + aarch64_vector_shift_conv_float_sisd + aarch64_vector_shift_conv_float_simd + aarch64_vector_reduce_int_max + aarch64_vector_reduce_fp_maxnm_sisd + aarch64_vector_reduce_fp_maxnm_simd + aarch64_vector_reduce_fp_max_sisd + aarch64_vector_reduce_fp_max_simd + aarch64_vector_reduce_fp_add_sisd + aarch64_vector_reduce_fp16_maxnm_sisd + aarch64_vector_reduce_fp16_maxnm_simd + aarch64_vector_reduce_fp16_max_sisd + aarch64_vector_reduce_fp16_max_simd + aarch64_vector_reduce_fp16_add_sisd + aarch64_vector_reduce_add_sisd + aarch64_vector_reduce_add_simd + aarch64_vector_reduce_add_long + aarch64_vector_logical + aarch64_vector_fp16_movi + aarch64_vector_cvt_bf16_vector + aarch64_vector_cvt_bf16_scalar + aarch64_vector_crypto_sm4_sm4enckey + aarch64_vector_crypto_sm4_sm4enc + aarch64_vector_crypto_sm3_sm3tt2b + aarch64_vector_crypto_sm3_sm3tt2a + aarch64_vector_crypto_sm3_sm3tt1b + aarch64_vector_crypto_sm3_sm3tt1a + aarch64_vector_crypto_sm3_sm3ss1 + aarch64_vector_crypto_sm3_sm3partw2 + aarch64_vector_crypto_sm3_sm3partw1 + aarch64_vector_crypto_sha512_sha512su1 + aarch64_vector_crypto_sha512_sha512su0 + aarch64_vector_crypto_sha512_sha512h2 + aarch64_vector_crypto_sha512_sha512h + aarch64_vector_crypto_sha3op_sha256_sched1 + aarch64_vector_crypto_sha3op_sha256_hash + aarch64_vector_crypto_sha3op_sha1_sched0 + aarch64_vector_crypto_sha3op_sha1_hash_parity + aarch64_vector_crypto_sha3op_sha1_hash_majority + aarch64_vector_crypto_sha3op_sha1_hash_choose + aarch64_vector_crypto_sha3_xar + aarch64_vector_crypto_sha3_rax1 + aarch64_vector_crypto_sha3_eor3 + aarch64_vector_crypto_sha3_bcax + aarch64_vector_crypto_sha2op_sha256_sched0 + aarch64_vector_crypto_sha2op_sha1_sched1 + aarch64_vector_crypto_sha2op_sha1_hash + aarch64_vector_crypto_aes_round + aarch64_vector_crypto_aes_mix + aarch64_vector_bfmmla + aarch64_vector_arithmetic_unary_special_sqrt_fp16 + aarch64_vector_arithmetic_unary_special_sqrt_est_int + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_sisd + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_simd + aarch64_vector_arithmetic_unary_special_sqrt_est_float_sisd + aarch64_vector_arithmetic_unary_special_sqrt_est_float_simd + aarch64_vector_arithmetic_unary_special_sqrt + aarch64_vector_arithmetic_unary_special_recip_int + aarch64_vector_arithmetic_unary_special_recip_fp16_sisd + aarch64_vector_arithmetic_unary_special_recip_fp16_simd + aarch64_vector_arithmetic_unary_special_recip_float_sisd + aarch64_vector_arithmetic_unary_special_recip_float_simd + aarch64_vector_arithmetic_unary_special_frecpx_fp16 + aarch64_vector_arithmetic_unary_special_frecpx + aarch64_vector_arithmetic_unary_shift + aarch64_vector_arithmetic_unary_rev + aarch64_vector_arithmetic_unary_rbit + aarch64_vector_arithmetic_unary_not + aarch64_vector_arithmetic_unary_fp16_round + aarch64_vector_arithmetic_unary_fp16_conv_int_sisd + aarch64_vector_arithmetic_unary_fp16_conv_int_simd + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_sisd + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_simd + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_sisd + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_simd + aarch64_vector_arithmetic_unary_float_xtn_sisd + aarch64_vector_arithmetic_unary_float_xtn_simd + aarch64_vector_arithmetic_unary_float_widen + aarch64_vector_arithmetic_unary_float_round_frint_32_64 + aarch64_vector_arithmetic_unary_float_round + aarch64_vector_arithmetic_unary_float_narrow + aarch64_vector_arithmetic_unary_float_conv_int_sisd + aarch64_vector_arithmetic_unary_float_conv_int_simd + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_sisd + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_simd + aarch64_vector_arithmetic_unary_float_conv_float_bulk_sisd + aarch64_vector_arithmetic_unary_float_conv_float_bulk_simd + aarch64_vector_arithmetic_unary_extract_sqxtun_sisd + aarch64_vector_arithmetic_unary_extract_sqxtun_simd + aarch64_vector_arithmetic_unary_extract_sat_sisd + aarch64_vector_arithmetic_unary_extract_sat_simd + aarch64_vector_arithmetic_unary_extract_nosat + aarch64_vector_arithmetic_unary_diff_neg_sat_sisd + aarch64_vector_arithmetic_unary_diff_neg_sat_simd + aarch64_vector_arithmetic_unary_diff_neg_int_sisd + aarch64_vector_arithmetic_unary_diff_neg_int_simd + aarch64_vector_arithmetic_unary_diff_neg_fp16 + aarch64_vector_arithmetic_unary_diff_neg_float + aarch64_vector_arithmetic_unary_cnt + aarch64_vector_arithmetic_unary_cmp_int_lessthan_sisd + aarch64_vector_arithmetic_unary_cmp_int_lessthan_simd + aarch64_vector_arithmetic_unary_cmp_int_bulk_sisd + aarch64_vector_arithmetic_unary_cmp_int_bulk_simd + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_sisd + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_simd + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_sisd + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_simd + aarch64_vector_arithmetic_unary_cmp_float_lessthan_sisd + aarch64_vector_arithmetic_unary_cmp_float_lessthan_simd + aarch64_vector_arithmetic_unary_cmp_float_bulk_sisd + aarch64_vector_arithmetic_unary_cmp_float_bulk_simd + aarch64_vector_arithmetic_unary_clsz + aarch64_vector_arithmetic_unary_add_saturating_sisd + aarch64_vector_arithmetic_unary_add_saturating_simd + aarch64_vector_arithmetic_unary_add_pairwise + aarch64_vector_arithmetic_binary_uniform_sub_saturating_sisd + aarch64_vector_arithmetic_binary_uniform_sub_saturating_simd + aarch64_vector_arithmetic_binary_uniform_sub_int + aarch64_vector_arithmetic_binary_uniform_sub_fp_sisd + aarch64_vector_arithmetic_binary_uniform_sub_fp_simd + aarch64_vector_arithmetic_binary_uniform_sub_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_sub_fp16_simd + aarch64_vector_arithmetic_binary_uniform_shift_sisd + aarch64_vector_arithmetic_binary_uniform_shift_simd + aarch64_vector_arithmetic_binary_uniform_rsqrts_sisd + aarch64_vector_arithmetic_binary_uniform_rsqrts_simd + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_simd + aarch64_vector_arithmetic_binary_uniform_recps_sisd + aarch64_vector_arithmetic_binary_uniform_recps_simd + aarch64_vector_arithmetic_binary_uniform_recps_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_recps_fp16_simd + aarch64_vector_arithmetic_binary_uniform_mul_int_product + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_sisd + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_simd + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_sisd + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_simd + aarch64_vector_arithmetic_binary_uniform_mul_int_dotp + aarch64_vector_arithmetic_binary_uniform_mul_int_bfdot + aarch64_vector_arithmetic_binary_uniform_mul_int_accum + aarch64_vector_arithmetic_binary_uniform_mul_fp_product + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_upper + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_lower + aarch64_vector_arithmetic_binary_uniform_mul_fp_fused + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_sisd + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_simd + aarch64_vector_arithmetic_binary_uniform_mul_fp_complex + aarch64_vector_arithmetic_binary_uniform_mul_fp16_product + aarch64_vector_arithmetic_binary_uniform_mul_fp16_fused + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_sisd + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_simd + aarch64_vector_arithmetic_binary_uniform_mul_acc_bf16_long + aarch64_vector_arithmetic_binary_uniform_max_min_single + aarch64_vector_arithmetic_binary_uniform_max_min_pair + aarch64_vector_arithmetic_binary_uniform_max_min_fp_2008 + aarch64_vector_arithmetic_binary_uniform_max_min_fp_1985 + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_2008 + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_1985 + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_usdot + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_mla + aarch64_vector_arithmetic_binary_uniform_logical_bsl_eor + aarch64_vector_arithmetic_binary_uniform_logical_and_orr + aarch64_vector_arithmetic_binary_uniform_div_fp16 + aarch64_vector_arithmetic_binary_uniform_div + aarch64_vector_arithmetic_binary_uniform_diff + aarch64_vector_arithmetic_binary_uniform_cmp_int_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_int_simd + aarch64_vector_arithmetic_binary_uniform_cmp_fp_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_fp_simd + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_simd + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_simd + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_sisd + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_simd + aarch64_vector_arithmetic_binary_uniform_add_wrapping_pair + aarch64_vector_arithmetic_binary_uniform_add_saturating_sisd + aarch64_vector_arithmetic_binary_uniform_add_saturating_simd + aarch64_vector_arithmetic_binary_uniform_add_halving_truncating + aarch64_vector_arithmetic_binary_uniform_add_halving_rounding + aarch64_vector_arithmetic_binary_uniform_add_fp_complex + aarch64_vector_arithmetic_binary_uniform_add_fp16 + aarch64_vector_arithmetic_binary_uniform_add_fp + aarch64_vector_arithmetic_binary_element_mul_long + aarch64_vector_arithmetic_binary_element_mul_int + aarch64_vector_arithmetic_binary_element_mul_high_sisd + aarch64_vector_arithmetic_binary_element_mul_high_simd + aarch64_vector_arithmetic_binary_element_mul_fp_sisd + aarch64_vector_arithmetic_binary_element_mul_fp_simd + aarch64_vector_arithmetic_binary_element_mul_fp16_sisd + aarch64_vector_arithmetic_binary_element_mul_fp16_simd + aarch64_vector_arithmetic_binary_element_mul_double_sisd + aarch64_vector_arithmetic_binary_element_mul_double_simd + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_upper + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_lower + aarch64_vector_arithmetic_binary_element_mul_acc_long + aarch64_vector_arithmetic_binary_element_mul_acc_int + aarch64_vector_arithmetic_binary_element_mul_acc_high_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_high_simd + aarch64_vector_arithmetic_binary_element_mul_acc_fp_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_fp_simd + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_simd + aarch64_vector_arithmetic_binary_element_mul_acc_double_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_double_simd + aarch64_vector_arithmetic_binary_element_mul_acc_complex + aarch64_vector_arithmetic_binary_element_mul_acc_bf16_long + aarch64_vector_arithmetic_binary_element_mat_mul_int_dotp + aarch64_vector_arithmetic_binary_element_dotp + aarch64_vector_arithmetic_binary_element_bfdot + aarch64_vector_arithmetic_binary_disparate_mul_product + aarch64_vector_arithmetic_binary_disparate_mul_poly + aarch64_vector_arithmetic_binary_disparate_mul_double_sisd + aarch64_vector_arithmetic_binary_disparate_mul_double_simd + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_sisd + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_simd + aarch64_vector_arithmetic_binary_disparate_mul_accum + aarch64_vector_arithmetic_binary_disparate_diff + aarch64_vector_arithmetic_binary_disparate_add_sub_wide + aarch64_vector_arithmetic_binary_disparate_add_sub_narrow + aarch64_vector_arithmetic_binary_disparate_add_sub_long + aarch64_udf + aarch64_system_sysops + aarch64_system_register_cpsr + aarch64_system_monitors + aarch64_system_exceptions_runtime_hvc + aarch64_system_exceptions_debug_halt + aarch64_system_exceptions_debug_breakpoint + aarch64_system_barriers_isb + aarch64_system_barriers_dsb + aarch64_system_barriers_dmb + aarch64_memory_vector_single_post_inc + aarch64_memory_vector_single_no_wb + aarch64_memory_vector_multiple_post_inc + aarch64_memory_vector_multiple_no_wb + aarch64_memory_single_simdfp_register + aarch64_memory_single_simdfp_immediate_unsigned + aarch64_memory_single_simdfp_immediate_signed_pre_idx + aarch64_memory_single_simdfp_immediate_signed_post_idx + aarch64_memory_single_simdfp_immediate_signed_offset_normal + aarch64_memory_single_general_register + aarch64_memory_single_general_immediate_unsigned + aarch64_memory_single_general_immediate_signed_pre_idx + aarch64_memory_single_general_immediate_signed_post_idx + aarch64_memory_single_general_immediate_signed_pac + aarch64_memory_single_general_immediate_signed_offset_unpriv + aarch64_memory_single_general_immediate_signed_offset_normal + aarch64_memory_single_general_immediate_signed_offset_lda_stl + aarch64_memory_pair_simdfp_pre_idx + aarch64_memory_pair_simdfp_post_idx + aarch64_memory_pair_simdfp_offset + aarch64_memory_pair_simdfp_no_alloc + aarch64_memory_pair_general_pre_idx + aarch64_memory_pair_general_post_idx + aarch64_memory_pair_general_offset + aarch64_memory_pair_general_no_alloc + aarch64_memory_ordered_rcpc + aarch64_memory_ordered + aarch64_memory_literal_simdfp + aarch64_memory_literal_general + aarch64_memory_exclusive_single + aarch64_memory_exclusive_pair + aarch64_memory_atomicops_swp + aarch64_memory_atomicops_ld + aarch64_memory_atomicops_cas_single + aarch64_memory_atomicops_cas_pair + aarch64_integer_tags_mcsubtag + aarch64_integer_tags_mcsettagarray + aarch64_integer_tags_mcsettagandzeroarray + aarch64_integer_tags_mcinserttagmask + aarch64_integer_tags_mcinsertrandomtag + aarch64_integer_tags_mcgettagarray + aarch64_integer_tags_mcgettag + aarch64_integer_tags_mcaddtag + aarch64_integer_shift_variable + aarch64_integer_pac_strip_hint + aarch64_integer_pac_pacib_hint + aarch64_integer_pac_pacib_dp_1src + aarch64_integer_pac_pacia_hint + aarch64_integer_pac_pacia_dp_1src + aarch64_integer_pac_pacdb_dp_1src + aarch64_integer_pac_pacda_dp_1src + aarch64_integer_pac_autib_hint + aarch64_integer_pac_autib_dp_1src + aarch64_integer_pac_autia_hint + aarch64_integer_pac_autia_dp_1src + aarch64_integer_pac_autdb_dp_1src + aarch64_integer_pac_autda_dp_1src + aarch64_integer_logical_shiftedreg + aarch64_integer_logical_immediate + aarch64_integer_ins_ext_insert_movewide + aarch64_integer_ins_ext_extract_immediate + aarch64_integer_flags_xaflag + aarch64_integer_flags_setf + aarch64_integer_flags_rmif + aarch64_integer_flags_cfinv + aarch64_integer_flags_axflag + aarch64_integer_crc + aarch64_integer_conditional_select + aarch64_integer_conditional_compare_register + aarch64_integer_conditional_compare_immediate + aarch64_integer_bitfield + aarch64_integer_arithmetic_rev + aarch64_integer_arithmetic_rbit + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddresssetflags + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddress + aarch64_integer_arithmetic_mul_widening_64_128hi + aarch64_integer_arithmetic_mul_widening_32_64 + aarch64_integer_arithmetic_mul_uniform_add_sub + aarch64_integer_arithmetic_div + aarch64_integer_arithmetic_cnt + aarch64_integer_arithmetic_address_pc_rel + aarch64_integer_arithmetic_add_sub_shiftedreg + aarch64_integer_arithmetic_add_sub_immediate + aarch64_integer_arithmetic_add_sub_extendedreg + aarch64_integer_arithmetic_add_sub_carry + aarch64_float_move_fp_select + aarch64_float_move_fp_imm + aarch64_float_convert_int + aarch64_float_convert_fp + aarch64_float_convert_fix + aarch64_float_compare_uncond + aarch64_float_compare_cond + aarch64_float_arithmetic_unary + aarch64_float_arithmetic_round_frint_32_64 + aarch64_float_arithmetic_round_frint + aarch64_float_arithmetic_mul_product + aarch64_float_arithmetic_mul_add_sub + aarch64_float_arithmetic_max_min + aarch64_float_arithmetic_div + aarch64_float_arithmetic_add_sub + aarch64_branch_unconditional_register + aarch64_branch_unconditional_immediate + aarch64_branch_unconditional_eret + aarch64_branch_unconditional_dret + aarch64_branch_conditional_test + aarch64_branch_conditional_cond + aarch64_branch_conditional_compare + Offline_utils + ) + (libraries asli.libASL-stage0)) +(alias (name default) (deps (package aslp_offline) ../aslp_offline.install)) \ No newline at end of file diff --git a/offlineASL-pc/gen-command b/offlineASL-pc/gen-command new file mode 100644 index 00000000..57faabe5 --- /dev/null +++ b/offlineASL-pc/gen-command @@ -0,0 +1 @@ +:gen A64 aarch64.+ ocaml true . diff --git a/offlineASL/decode_tests.ml b/offlineASL/decode_tests.ml deleted file mode 100644 index 3f44e593..00000000 --- a/offlineASL/decode_tests.ml +++ /dev/null @@ -1,4 +0,0 @@ -(* AUTO-GENERATED LIFTER FILE *) - -open Offline_utils - diff --git a/offlineASL/dune b/offlineASL/dune index aa2cf6f6..f9e7d25c 100644 --- a/offlineASL/dune +++ b/offlineASL/dune @@ -1,11 +1,4 @@ -; AUTO-GENERATED BY OCAML BACKEND -(library - (name offlineASL) - (flags - (:standard -w -27 -w -33 -cclib -lstdc++)) - (modules - offline - decode_tests - offline_utils - ) - (libraries asli.libASL)) +(include dune.generated) + +(include dune.bootstrap) + diff --git a/offlineASL/dune.bootstrap b/offlineASL/dune.bootstrap new file mode 100644 index 00000000..001b9e59 --- /dev/null +++ b/offlineASL/dune.bootstrap @@ -0,0 +1,22 @@ +; this manually-written file implements the bootstrapping for the offline lifter dune files. + +; to bootstrap without a dune.generated file: +; +; 1. cd offlineASL +; 2. make blank file so dune executes: touch dune.generated +; 3. write file which calls gen-command: ASLP_OFFLINE_BOOTSTRAP=true dune runtest offlineASL --auto-promote +; 4. update file with result from gen-command: dune runtest offlineASL --auto-promote + +(rule + (target dune.generated.new) + (action + (write-file %{target} " + (rule (targets %{target}) + (deps gen-command) + (action (with-stdin-from gen-command (run asli))))")) + (enabled_if %{env:ASLP_OFFLINE_BOOTSTRAP=false})) + +(rule + (alias runtest) + (package aslp_offline) + (action (diff dune.generated dune.generated.new))) diff --git a/offlineASL/dune.generated b/offlineASL/dune.generated new file mode 100644 index 00000000..3acb4cf8 --- /dev/null +++ b/offlineASL/dune.generated @@ -0,0 +1,760 @@ +; AUTO-GENERATED BY OCAML BACKEND +(rule + (targets + dune.generated.new + offline.ml + decode_tests.ml + aarch64_vector_transfer_vector_table.ml + aarch64_vector_transfer_vector_permute_zip.ml + aarch64_vector_transfer_vector_permute_unzip.ml + aarch64_vector_transfer_vector_permute_transpose.ml + aarch64_vector_transfer_vector_insert.ml + aarch64_vector_transfer_vector_extract.ml + aarch64_vector_transfer_vector_cpy_dup_sisd.ml + aarch64_vector_transfer_vector_cpy_dup_simd.ml + aarch64_vector_transfer_integer_move_unsigned.ml + aarch64_vector_transfer_integer_move_signed.ml + aarch64_vector_transfer_integer_insert.ml + aarch64_vector_transfer_integer_dup.ml + aarch64_vector_shift_right_sisd.ml + aarch64_vector_shift_right_simd.ml + aarch64_vector_shift_right_narrow_uniform_sisd.ml + aarch64_vector_shift_right_narrow_uniform_simd.ml + aarch64_vector_shift_right_narrow_nonuniform_sisd.ml + aarch64_vector_shift_right_narrow_nonuniform_simd.ml + aarch64_vector_shift_right_narrow_logical.ml + aarch64_vector_shift_right_insert_sisd.ml + aarch64_vector_shift_right_insert_simd.ml + aarch64_vector_shift_left_sisd.ml + aarch64_vector_shift_left_simd.ml + aarch64_vector_shift_left_sat_sisd.ml + aarch64_vector_shift_left_sat_simd.ml + aarch64_vector_shift_left_long.ml + aarch64_vector_shift_left_insert_sisd.ml + aarch64_vector_shift_left_insert_simd.ml + aarch64_vector_shift_conv_int_sisd.ml + aarch64_vector_shift_conv_int_simd.ml + aarch64_vector_shift_conv_float_sisd.ml + aarch64_vector_shift_conv_float_simd.ml + aarch64_vector_reduce_int_max.ml + aarch64_vector_reduce_fp_maxnm_sisd.ml + aarch64_vector_reduce_fp_maxnm_simd.ml + aarch64_vector_reduce_fp_max_sisd.ml + aarch64_vector_reduce_fp_max_simd.ml + aarch64_vector_reduce_fp_add_sisd.ml + aarch64_vector_reduce_fp16_maxnm_sisd.ml + aarch64_vector_reduce_fp16_maxnm_simd.ml + aarch64_vector_reduce_fp16_max_sisd.ml + aarch64_vector_reduce_fp16_max_simd.ml + aarch64_vector_reduce_fp16_add_sisd.ml + aarch64_vector_reduce_add_sisd.ml + aarch64_vector_reduce_add_simd.ml + aarch64_vector_reduce_add_long.ml + aarch64_vector_logical.ml + aarch64_vector_fp16_movi.ml + aarch64_vector_cvt_bf16_vector.ml + aarch64_vector_cvt_bf16_scalar.ml + aarch64_vector_crypto_sm4_sm4enckey.ml + aarch64_vector_crypto_sm4_sm4enc.ml + aarch64_vector_crypto_sm3_sm3tt2b.ml + aarch64_vector_crypto_sm3_sm3tt2a.ml + aarch64_vector_crypto_sm3_sm3tt1b.ml + aarch64_vector_crypto_sm3_sm3tt1a.ml + aarch64_vector_crypto_sm3_sm3ss1.ml + aarch64_vector_crypto_sm3_sm3partw2.ml + aarch64_vector_crypto_sm3_sm3partw1.ml + aarch64_vector_crypto_sha512_sha512su1.ml + aarch64_vector_crypto_sha512_sha512su0.ml + aarch64_vector_crypto_sha512_sha512h2.ml + aarch64_vector_crypto_sha512_sha512h.ml + aarch64_vector_crypto_sha3op_sha256_sched1.ml + aarch64_vector_crypto_sha3op_sha256_hash.ml + aarch64_vector_crypto_sha3op_sha1_sched0.ml + aarch64_vector_crypto_sha3op_sha1_hash_parity.ml + aarch64_vector_crypto_sha3op_sha1_hash_majority.ml + aarch64_vector_crypto_sha3op_sha1_hash_choose.ml + aarch64_vector_crypto_sha3_xar.ml + aarch64_vector_crypto_sha3_rax1.ml + aarch64_vector_crypto_sha3_eor3.ml + aarch64_vector_crypto_sha3_bcax.ml + aarch64_vector_crypto_sha2op_sha256_sched0.ml + aarch64_vector_crypto_sha2op_sha1_sched1.ml + aarch64_vector_crypto_sha2op_sha1_hash.ml + aarch64_vector_crypto_aes_round.ml + aarch64_vector_crypto_aes_mix.ml + aarch64_vector_bfmmla.ml + aarch64_vector_arithmetic_unary_special_sqrt_fp16.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_int.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_sisd.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_simd.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_float_sisd.ml + aarch64_vector_arithmetic_unary_special_sqrt_est_float_simd.ml + aarch64_vector_arithmetic_unary_special_sqrt.ml + aarch64_vector_arithmetic_unary_special_recip_int.ml + aarch64_vector_arithmetic_unary_special_recip_fp16_sisd.ml + aarch64_vector_arithmetic_unary_special_recip_fp16_simd.ml + aarch64_vector_arithmetic_unary_special_recip_float_sisd.ml + aarch64_vector_arithmetic_unary_special_recip_float_simd.ml + aarch64_vector_arithmetic_unary_special_frecpx_fp16.ml + aarch64_vector_arithmetic_unary_special_frecpx.ml + aarch64_vector_arithmetic_unary_shift.ml + aarch64_vector_arithmetic_unary_rev.ml + aarch64_vector_arithmetic_unary_rbit.ml + aarch64_vector_arithmetic_unary_not.ml + aarch64_vector_arithmetic_unary_fp16_round.ml + aarch64_vector_arithmetic_unary_fp16_conv_int_sisd.ml + aarch64_vector_arithmetic_unary_fp16_conv_int_simd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_sisd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_simd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_sisd.ml + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_simd.ml + aarch64_vector_arithmetic_unary_float_xtn_sisd.ml + aarch64_vector_arithmetic_unary_float_xtn_simd.ml + aarch64_vector_arithmetic_unary_float_widen.ml + aarch64_vector_arithmetic_unary_float_round_frint_32_64.ml + aarch64_vector_arithmetic_unary_float_round.ml + aarch64_vector_arithmetic_unary_float_narrow.ml + aarch64_vector_arithmetic_unary_float_conv_int_sisd.ml + aarch64_vector_arithmetic_unary_float_conv_int_simd.ml + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_sisd.ml + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_simd.ml + aarch64_vector_arithmetic_unary_float_conv_float_bulk_sisd.ml + aarch64_vector_arithmetic_unary_float_conv_float_bulk_simd.ml + aarch64_vector_arithmetic_unary_extract_sqxtun_sisd.ml + aarch64_vector_arithmetic_unary_extract_sqxtun_simd.ml + aarch64_vector_arithmetic_unary_extract_sat_sisd.ml + aarch64_vector_arithmetic_unary_extract_sat_simd.ml + aarch64_vector_arithmetic_unary_extract_nosat.ml + aarch64_vector_arithmetic_unary_diff_neg_sat_sisd.ml + aarch64_vector_arithmetic_unary_diff_neg_sat_simd.ml + aarch64_vector_arithmetic_unary_diff_neg_int_sisd.ml + aarch64_vector_arithmetic_unary_diff_neg_int_simd.ml + aarch64_vector_arithmetic_unary_diff_neg_fp16.ml + aarch64_vector_arithmetic_unary_diff_neg_float.ml + aarch64_vector_arithmetic_unary_cnt.ml + aarch64_vector_arithmetic_unary_cmp_int_lessthan_sisd.ml + aarch64_vector_arithmetic_unary_cmp_int_lessthan_simd.ml + aarch64_vector_arithmetic_unary_cmp_int_bulk_sisd.ml + aarch64_vector_arithmetic_unary_cmp_int_bulk_simd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_sisd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_simd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_sisd.ml + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_simd.ml + aarch64_vector_arithmetic_unary_cmp_float_lessthan_sisd.ml + aarch64_vector_arithmetic_unary_cmp_float_lessthan_simd.ml + aarch64_vector_arithmetic_unary_cmp_float_bulk_sisd.ml + aarch64_vector_arithmetic_unary_cmp_float_bulk_simd.ml + aarch64_vector_arithmetic_unary_clsz.ml + aarch64_vector_arithmetic_unary_add_saturating_sisd.ml + aarch64_vector_arithmetic_unary_add_saturating_simd.ml + aarch64_vector_arithmetic_unary_add_pairwise.ml + aarch64_vector_arithmetic_binary_uniform_sub_saturating_sisd.ml + aarch64_vector_arithmetic_binary_uniform_sub_saturating_simd.ml + aarch64_vector_arithmetic_binary_uniform_sub_int.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp_sisd.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp_simd.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_sub_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_shift_sisd.ml + aarch64_vector_arithmetic_binary_uniform_shift_simd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_sisd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_simd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_recps_sisd.ml + aarch64_vector_arithmetic_binary_uniform_recps_simd.ml + aarch64_vector_arithmetic_binary_uniform_recps_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_recps_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_product.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_dotp.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_bfdot.ml + aarch64_vector_arithmetic_binary_uniform_mul_int_accum.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_product.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_upper.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_lower.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_fused.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp_complex.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_product.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_fused.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_sisd.ml + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_simd.ml + aarch64_vector_arithmetic_binary_uniform_mul_acc_bf16_long.ml + aarch64_vector_arithmetic_binary_uniform_max_min_single.ml + aarch64_vector_arithmetic_binary_uniform_max_min_pair.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp_2008.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp_1985.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_2008.ml + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_1985.ml + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_usdot.ml + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_mla.ml + aarch64_vector_arithmetic_binary_uniform_logical_bsl_eor.ml + aarch64_vector_arithmetic_binary_uniform_logical_and_orr.ml + aarch64_vector_arithmetic_binary_uniform_div_fp16.ml + aarch64_vector_arithmetic_binary_uniform_div.ml + aarch64_vector_arithmetic_binary_uniform_diff.ml + aarch64_vector_arithmetic_binary_uniform_cmp_int_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_int_simd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp_simd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_simd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_sisd.ml + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_simd.ml + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_sisd.ml + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_simd.ml + aarch64_vector_arithmetic_binary_uniform_add_wrapping_pair.ml + aarch64_vector_arithmetic_binary_uniform_add_saturating_sisd.ml + aarch64_vector_arithmetic_binary_uniform_add_saturating_simd.ml + aarch64_vector_arithmetic_binary_uniform_add_halving_truncating.ml + aarch64_vector_arithmetic_binary_uniform_add_halving_rounding.ml + aarch64_vector_arithmetic_binary_uniform_add_fp_complex.ml + aarch64_vector_arithmetic_binary_uniform_add_fp16.ml + aarch64_vector_arithmetic_binary_uniform_add_fp.ml + aarch64_vector_arithmetic_binary_element_mul_long.ml + aarch64_vector_arithmetic_binary_element_mul_int.ml + aarch64_vector_arithmetic_binary_element_mul_high_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_high_simd.ml + aarch64_vector_arithmetic_binary_element_mul_fp_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_fp_simd.ml + aarch64_vector_arithmetic_binary_element_mul_fp16_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_fp16_simd.ml + aarch64_vector_arithmetic_binary_element_mul_double_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_double_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_upper.ml + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_lower.ml + aarch64_vector_arithmetic_binary_element_mul_acc_long.ml + aarch64_vector_arithmetic_binary_element_mul_acc_int.ml + aarch64_vector_arithmetic_binary_element_mul_acc_high_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_high_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_double_sisd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_double_simd.ml + aarch64_vector_arithmetic_binary_element_mul_acc_complex.ml + aarch64_vector_arithmetic_binary_element_mul_acc_bf16_long.ml + aarch64_vector_arithmetic_binary_element_mat_mul_int_dotp.ml + aarch64_vector_arithmetic_binary_element_dotp.ml + aarch64_vector_arithmetic_binary_element_bfdot.ml + aarch64_vector_arithmetic_binary_disparate_mul_product.ml + aarch64_vector_arithmetic_binary_disparate_mul_poly.ml + aarch64_vector_arithmetic_binary_disparate_mul_double_sisd.ml + aarch64_vector_arithmetic_binary_disparate_mul_double_simd.ml + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_sisd.ml + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_simd.ml + aarch64_vector_arithmetic_binary_disparate_mul_accum.ml + aarch64_vector_arithmetic_binary_disparate_diff.ml + aarch64_vector_arithmetic_binary_disparate_add_sub_wide.ml + aarch64_vector_arithmetic_binary_disparate_add_sub_narrow.ml + aarch64_vector_arithmetic_binary_disparate_add_sub_long.ml + aarch64_udf.ml + aarch64_system_sysops.ml + aarch64_system_register_cpsr.ml + aarch64_system_monitors.ml + aarch64_system_exceptions_runtime_hvc.ml + aarch64_system_exceptions_debug_halt.ml + aarch64_system_exceptions_debug_breakpoint.ml + aarch64_system_barriers_isb.ml + aarch64_system_barriers_dsb.ml + aarch64_system_barriers_dmb.ml + aarch64_memory_vector_single_post_inc.ml + aarch64_memory_vector_single_no_wb.ml + aarch64_memory_vector_multiple_post_inc.ml + aarch64_memory_vector_multiple_no_wb.ml + aarch64_memory_single_simdfp_register.ml + aarch64_memory_single_simdfp_immediate_unsigned.ml + aarch64_memory_single_simdfp_immediate_signed_pre_idx.ml + aarch64_memory_single_simdfp_immediate_signed_post_idx.ml + aarch64_memory_single_simdfp_immediate_signed_offset_normal.ml + aarch64_memory_single_general_register.ml + aarch64_memory_single_general_immediate_unsigned.ml + aarch64_memory_single_general_immediate_signed_pre_idx.ml + aarch64_memory_single_general_immediate_signed_post_idx.ml + aarch64_memory_single_general_immediate_signed_pac.ml + aarch64_memory_single_general_immediate_signed_offset_unpriv.ml + aarch64_memory_single_general_immediate_signed_offset_normal.ml + aarch64_memory_single_general_immediate_signed_offset_lda_stl.ml + aarch64_memory_pair_simdfp_pre_idx.ml + aarch64_memory_pair_simdfp_post_idx.ml + aarch64_memory_pair_simdfp_offset.ml + aarch64_memory_pair_simdfp_no_alloc.ml + aarch64_memory_pair_general_pre_idx.ml + aarch64_memory_pair_general_post_idx.ml + aarch64_memory_pair_general_offset.ml + aarch64_memory_pair_general_no_alloc.ml + aarch64_memory_ordered_rcpc.ml + aarch64_memory_ordered.ml + aarch64_memory_literal_simdfp.ml + aarch64_memory_literal_general.ml + aarch64_memory_exclusive_single.ml + aarch64_memory_exclusive_pair.ml + aarch64_memory_atomicops_swp.ml + aarch64_memory_atomicops_ld.ml + aarch64_memory_atomicops_cas_single.ml + aarch64_memory_atomicops_cas_pair.ml + aarch64_integer_tags_mcsubtag.ml + aarch64_integer_tags_mcsettagarray.ml + aarch64_integer_tags_mcsettagandzeroarray.ml + aarch64_integer_tags_mcinserttagmask.ml + aarch64_integer_tags_mcinsertrandomtag.ml + aarch64_integer_tags_mcgettagarray.ml + aarch64_integer_tags_mcgettag.ml + aarch64_integer_tags_mcaddtag.ml + aarch64_integer_shift_variable.ml + aarch64_integer_pac_strip_hint.ml + aarch64_integer_pac_pacib_hint.ml + aarch64_integer_pac_pacib_dp_1src.ml + aarch64_integer_pac_pacia_hint.ml + aarch64_integer_pac_pacia_dp_1src.ml + aarch64_integer_pac_pacdb_dp_1src.ml + aarch64_integer_pac_pacda_dp_1src.ml + aarch64_integer_pac_autib_hint.ml + aarch64_integer_pac_autib_dp_1src.ml + aarch64_integer_pac_autia_hint.ml + aarch64_integer_pac_autia_dp_1src.ml + aarch64_integer_pac_autdb_dp_1src.ml + aarch64_integer_pac_autda_dp_1src.ml + aarch64_integer_logical_shiftedreg.ml + aarch64_integer_logical_immediate.ml + aarch64_integer_ins_ext_insert_movewide.ml + aarch64_integer_ins_ext_extract_immediate.ml + aarch64_integer_flags_xaflag.ml + aarch64_integer_flags_setf.ml + aarch64_integer_flags_rmif.ml + aarch64_integer_flags_cfinv.ml + aarch64_integer_flags_axflag.ml + aarch64_integer_crc.ml + aarch64_integer_conditional_select.ml + aarch64_integer_conditional_compare_register.ml + aarch64_integer_conditional_compare_immediate.ml + aarch64_integer_bitfield.ml + aarch64_integer_arithmetic_rev.ml + aarch64_integer_arithmetic_rbit.ml + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddresssetflags.ml + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddress.ml + aarch64_integer_arithmetic_mul_widening_64_128hi.ml + aarch64_integer_arithmetic_mul_widening_32_64.ml + aarch64_integer_arithmetic_mul_uniform_add_sub.ml + aarch64_integer_arithmetic_div.ml + aarch64_integer_arithmetic_cnt.ml + aarch64_integer_arithmetic_address_pc_rel.ml + aarch64_integer_arithmetic_add_sub_shiftedreg.ml + aarch64_integer_arithmetic_add_sub_immediate.ml + aarch64_integer_arithmetic_add_sub_extendedreg.ml + aarch64_integer_arithmetic_add_sub_carry.ml + aarch64_float_move_fp_select.ml + aarch64_float_move_fp_imm.ml + aarch64_float_convert_int.ml + aarch64_float_convert_fp.ml + aarch64_float_convert_fix.ml + aarch64_float_compare_uncond.ml + aarch64_float_compare_cond.ml + aarch64_float_arithmetic_unary.ml + aarch64_float_arithmetic_round_frint_32_64.ml + aarch64_float_arithmetic_round_frint.ml + aarch64_float_arithmetic_mul_product.ml + aarch64_float_arithmetic_mul_add_sub.ml + aarch64_float_arithmetic_max_min.ml + aarch64_float_arithmetic_div.ml + aarch64_float_arithmetic_add_sub.ml + aarch64_branch_unconditional_register.ml + aarch64_branch_unconditional_immediate.ml + aarch64_branch_unconditional_eret.ml + aarch64_branch_unconditional_dret.ml + aarch64_branch_conditional_test.ml + aarch64_branch_conditional_cond.ml + aarch64_branch_conditional_compare.ml + Offline_utils.ml + + ) + (deps gen-command) + (action (with-stdin-from gen-command (run asli))) +) + + + (library + (name offlineASL) + (public_name aslp_offline.aarch64) + (flags + (:standard -w -27 -w -33 -cclib -lstdc++)) + (modules + offline + decode_tests + aarch64_vector_transfer_vector_table + aarch64_vector_transfer_vector_permute_zip + aarch64_vector_transfer_vector_permute_unzip + aarch64_vector_transfer_vector_permute_transpose + aarch64_vector_transfer_vector_insert + aarch64_vector_transfer_vector_extract + aarch64_vector_transfer_vector_cpy_dup_sisd + aarch64_vector_transfer_vector_cpy_dup_simd + aarch64_vector_transfer_integer_move_unsigned + aarch64_vector_transfer_integer_move_signed + aarch64_vector_transfer_integer_insert + aarch64_vector_transfer_integer_dup + aarch64_vector_shift_right_sisd + aarch64_vector_shift_right_simd + aarch64_vector_shift_right_narrow_uniform_sisd + aarch64_vector_shift_right_narrow_uniform_simd + aarch64_vector_shift_right_narrow_nonuniform_sisd + aarch64_vector_shift_right_narrow_nonuniform_simd + aarch64_vector_shift_right_narrow_logical + aarch64_vector_shift_right_insert_sisd + aarch64_vector_shift_right_insert_simd + aarch64_vector_shift_left_sisd + aarch64_vector_shift_left_simd + aarch64_vector_shift_left_sat_sisd + aarch64_vector_shift_left_sat_simd + aarch64_vector_shift_left_long + aarch64_vector_shift_left_insert_sisd + aarch64_vector_shift_left_insert_simd + aarch64_vector_shift_conv_int_sisd + aarch64_vector_shift_conv_int_simd + aarch64_vector_shift_conv_float_sisd + aarch64_vector_shift_conv_float_simd + aarch64_vector_reduce_int_max + aarch64_vector_reduce_fp_maxnm_sisd + aarch64_vector_reduce_fp_maxnm_simd + aarch64_vector_reduce_fp_max_sisd + aarch64_vector_reduce_fp_max_simd + aarch64_vector_reduce_fp_add_sisd + aarch64_vector_reduce_fp16_maxnm_sisd + aarch64_vector_reduce_fp16_maxnm_simd + aarch64_vector_reduce_fp16_max_sisd + aarch64_vector_reduce_fp16_max_simd + aarch64_vector_reduce_fp16_add_sisd + aarch64_vector_reduce_add_sisd + aarch64_vector_reduce_add_simd + aarch64_vector_reduce_add_long + aarch64_vector_logical + aarch64_vector_fp16_movi + aarch64_vector_cvt_bf16_vector + aarch64_vector_cvt_bf16_scalar + aarch64_vector_crypto_sm4_sm4enckey + aarch64_vector_crypto_sm4_sm4enc + aarch64_vector_crypto_sm3_sm3tt2b + aarch64_vector_crypto_sm3_sm3tt2a + aarch64_vector_crypto_sm3_sm3tt1b + aarch64_vector_crypto_sm3_sm3tt1a + aarch64_vector_crypto_sm3_sm3ss1 + aarch64_vector_crypto_sm3_sm3partw2 + aarch64_vector_crypto_sm3_sm3partw1 + aarch64_vector_crypto_sha512_sha512su1 + aarch64_vector_crypto_sha512_sha512su0 + aarch64_vector_crypto_sha512_sha512h2 + aarch64_vector_crypto_sha512_sha512h + aarch64_vector_crypto_sha3op_sha256_sched1 + aarch64_vector_crypto_sha3op_sha256_hash + aarch64_vector_crypto_sha3op_sha1_sched0 + aarch64_vector_crypto_sha3op_sha1_hash_parity + aarch64_vector_crypto_sha3op_sha1_hash_majority + aarch64_vector_crypto_sha3op_sha1_hash_choose + aarch64_vector_crypto_sha3_xar + aarch64_vector_crypto_sha3_rax1 + aarch64_vector_crypto_sha3_eor3 + aarch64_vector_crypto_sha3_bcax + aarch64_vector_crypto_sha2op_sha256_sched0 + aarch64_vector_crypto_sha2op_sha1_sched1 + aarch64_vector_crypto_sha2op_sha1_hash + aarch64_vector_crypto_aes_round + aarch64_vector_crypto_aes_mix + aarch64_vector_bfmmla + aarch64_vector_arithmetic_unary_special_sqrt_fp16 + aarch64_vector_arithmetic_unary_special_sqrt_est_int + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_sisd + aarch64_vector_arithmetic_unary_special_sqrt_est_fp16_simd + aarch64_vector_arithmetic_unary_special_sqrt_est_float_sisd + aarch64_vector_arithmetic_unary_special_sqrt_est_float_simd + aarch64_vector_arithmetic_unary_special_sqrt + aarch64_vector_arithmetic_unary_special_recip_int + aarch64_vector_arithmetic_unary_special_recip_fp16_sisd + aarch64_vector_arithmetic_unary_special_recip_fp16_simd + aarch64_vector_arithmetic_unary_special_recip_float_sisd + aarch64_vector_arithmetic_unary_special_recip_float_simd + aarch64_vector_arithmetic_unary_special_frecpx_fp16 + aarch64_vector_arithmetic_unary_special_frecpx + aarch64_vector_arithmetic_unary_shift + aarch64_vector_arithmetic_unary_rev + aarch64_vector_arithmetic_unary_rbit + aarch64_vector_arithmetic_unary_not + aarch64_vector_arithmetic_unary_fp16_round + aarch64_vector_arithmetic_unary_fp16_conv_int_sisd + aarch64_vector_arithmetic_unary_fp16_conv_int_simd + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_sisd + aarch64_vector_arithmetic_unary_fp16_conv_float_tieaway_simd + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_sisd + aarch64_vector_arithmetic_unary_fp16_conv_float_bulk_simd + aarch64_vector_arithmetic_unary_float_xtn_sisd + aarch64_vector_arithmetic_unary_float_xtn_simd + aarch64_vector_arithmetic_unary_float_widen + aarch64_vector_arithmetic_unary_float_round_frint_32_64 + aarch64_vector_arithmetic_unary_float_round + aarch64_vector_arithmetic_unary_float_narrow + aarch64_vector_arithmetic_unary_float_conv_int_sisd + aarch64_vector_arithmetic_unary_float_conv_int_simd + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_sisd + aarch64_vector_arithmetic_unary_float_conv_float_tieaway_simd + aarch64_vector_arithmetic_unary_float_conv_float_bulk_sisd + aarch64_vector_arithmetic_unary_float_conv_float_bulk_simd + aarch64_vector_arithmetic_unary_extract_sqxtun_sisd + aarch64_vector_arithmetic_unary_extract_sqxtun_simd + aarch64_vector_arithmetic_unary_extract_sat_sisd + aarch64_vector_arithmetic_unary_extract_sat_simd + aarch64_vector_arithmetic_unary_extract_nosat + aarch64_vector_arithmetic_unary_diff_neg_sat_sisd + aarch64_vector_arithmetic_unary_diff_neg_sat_simd + aarch64_vector_arithmetic_unary_diff_neg_int_sisd + aarch64_vector_arithmetic_unary_diff_neg_int_simd + aarch64_vector_arithmetic_unary_diff_neg_fp16 + aarch64_vector_arithmetic_unary_diff_neg_float + aarch64_vector_arithmetic_unary_cnt + aarch64_vector_arithmetic_unary_cmp_int_lessthan_sisd + aarch64_vector_arithmetic_unary_cmp_int_lessthan_simd + aarch64_vector_arithmetic_unary_cmp_int_bulk_sisd + aarch64_vector_arithmetic_unary_cmp_int_bulk_simd + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_sisd + aarch64_vector_arithmetic_unary_cmp_fp16_lessthan_simd + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_sisd + aarch64_vector_arithmetic_unary_cmp_fp16_bulk_simd + aarch64_vector_arithmetic_unary_cmp_float_lessthan_sisd + aarch64_vector_arithmetic_unary_cmp_float_lessthan_simd + aarch64_vector_arithmetic_unary_cmp_float_bulk_sisd + aarch64_vector_arithmetic_unary_cmp_float_bulk_simd + aarch64_vector_arithmetic_unary_clsz + aarch64_vector_arithmetic_unary_add_saturating_sisd + aarch64_vector_arithmetic_unary_add_saturating_simd + aarch64_vector_arithmetic_unary_add_pairwise + aarch64_vector_arithmetic_binary_uniform_sub_saturating_sisd + aarch64_vector_arithmetic_binary_uniform_sub_saturating_simd + aarch64_vector_arithmetic_binary_uniform_sub_int + aarch64_vector_arithmetic_binary_uniform_sub_fp_sisd + aarch64_vector_arithmetic_binary_uniform_sub_fp_simd + aarch64_vector_arithmetic_binary_uniform_sub_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_sub_fp16_simd + aarch64_vector_arithmetic_binary_uniform_shift_sisd + aarch64_vector_arithmetic_binary_uniform_shift_simd + aarch64_vector_arithmetic_binary_uniform_rsqrts_sisd + aarch64_vector_arithmetic_binary_uniform_rsqrts_simd + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_rsqrts_fp16_simd + aarch64_vector_arithmetic_binary_uniform_recps_sisd + aarch64_vector_arithmetic_binary_uniform_recps_simd + aarch64_vector_arithmetic_binary_uniform_recps_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_recps_fp16_simd + aarch64_vector_arithmetic_binary_uniform_mul_int_product + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_sisd + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_simd + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_sisd + aarch64_vector_arithmetic_binary_uniform_mul_int_doubling_accum_simd + aarch64_vector_arithmetic_binary_uniform_mul_int_dotp + aarch64_vector_arithmetic_binary_uniform_mul_int_bfdot + aarch64_vector_arithmetic_binary_uniform_mul_int_accum + aarch64_vector_arithmetic_binary_uniform_mul_fp_product + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_upper + aarch64_vector_arithmetic_binary_uniform_mul_fp_mul_norounding_lower + aarch64_vector_arithmetic_binary_uniform_mul_fp_fused + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_sisd + aarch64_vector_arithmetic_binary_uniform_mul_fp_extended_simd + aarch64_vector_arithmetic_binary_uniform_mul_fp_complex + aarch64_vector_arithmetic_binary_uniform_mul_fp16_product + aarch64_vector_arithmetic_binary_uniform_mul_fp16_fused + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_sisd + aarch64_vector_arithmetic_binary_uniform_mul_fp16_extended_simd + aarch64_vector_arithmetic_binary_uniform_mul_acc_bf16_long + aarch64_vector_arithmetic_binary_uniform_max_min_single + aarch64_vector_arithmetic_binary_uniform_max_min_pair + aarch64_vector_arithmetic_binary_uniform_max_min_fp_2008 + aarch64_vector_arithmetic_binary_uniform_max_min_fp_1985 + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_2008 + aarch64_vector_arithmetic_binary_uniform_max_min_fp16_1985 + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_usdot + aarch64_vector_arithmetic_binary_uniform_mat_mul_int_mla + aarch64_vector_arithmetic_binary_uniform_logical_bsl_eor + aarch64_vector_arithmetic_binary_uniform_logical_and_orr + aarch64_vector_arithmetic_binary_uniform_div_fp16 + aarch64_vector_arithmetic_binary_uniform_div + aarch64_vector_arithmetic_binary_uniform_diff + aarch64_vector_arithmetic_binary_uniform_cmp_int_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_int_simd + aarch64_vector_arithmetic_binary_uniform_cmp_fp_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_fp_simd + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_fp16_simd + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_sisd + aarch64_vector_arithmetic_binary_uniform_cmp_bitwise_simd + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_sisd + aarch64_vector_arithmetic_binary_uniform_add_wrapping_single_simd + aarch64_vector_arithmetic_binary_uniform_add_wrapping_pair + aarch64_vector_arithmetic_binary_uniform_add_saturating_sisd + aarch64_vector_arithmetic_binary_uniform_add_saturating_simd + aarch64_vector_arithmetic_binary_uniform_add_halving_truncating + aarch64_vector_arithmetic_binary_uniform_add_halving_rounding + aarch64_vector_arithmetic_binary_uniform_add_fp_complex + aarch64_vector_arithmetic_binary_uniform_add_fp16 + aarch64_vector_arithmetic_binary_uniform_add_fp + aarch64_vector_arithmetic_binary_element_mul_long + aarch64_vector_arithmetic_binary_element_mul_int + aarch64_vector_arithmetic_binary_element_mul_high_sisd + aarch64_vector_arithmetic_binary_element_mul_high_simd + aarch64_vector_arithmetic_binary_element_mul_fp_sisd + aarch64_vector_arithmetic_binary_element_mul_fp_simd + aarch64_vector_arithmetic_binary_element_mul_fp16_sisd + aarch64_vector_arithmetic_binary_element_mul_fp16_simd + aarch64_vector_arithmetic_binary_element_mul_double_sisd + aarch64_vector_arithmetic_binary_element_mul_double_simd + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_upper + aarch64_vector_arithmetic_binary_element_mul_acc_mul_norounding_i_lower + aarch64_vector_arithmetic_binary_element_mul_acc_long + aarch64_vector_arithmetic_binary_element_mul_acc_int + aarch64_vector_arithmetic_binary_element_mul_acc_high_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_high_simd + aarch64_vector_arithmetic_binary_element_mul_acc_fp_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_fp_simd + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_fp16_simd + aarch64_vector_arithmetic_binary_element_mul_acc_double_sisd + aarch64_vector_arithmetic_binary_element_mul_acc_double_simd + aarch64_vector_arithmetic_binary_element_mul_acc_complex + aarch64_vector_arithmetic_binary_element_mul_acc_bf16_long + aarch64_vector_arithmetic_binary_element_mat_mul_int_dotp + aarch64_vector_arithmetic_binary_element_dotp + aarch64_vector_arithmetic_binary_element_bfdot + aarch64_vector_arithmetic_binary_disparate_mul_product + aarch64_vector_arithmetic_binary_disparate_mul_poly + aarch64_vector_arithmetic_binary_disparate_mul_double_sisd + aarch64_vector_arithmetic_binary_disparate_mul_double_simd + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_sisd + aarch64_vector_arithmetic_binary_disparate_mul_dmacc_simd + aarch64_vector_arithmetic_binary_disparate_mul_accum + aarch64_vector_arithmetic_binary_disparate_diff + aarch64_vector_arithmetic_binary_disparate_add_sub_wide + aarch64_vector_arithmetic_binary_disparate_add_sub_narrow + aarch64_vector_arithmetic_binary_disparate_add_sub_long + aarch64_udf + aarch64_system_sysops + aarch64_system_register_cpsr + aarch64_system_monitors + aarch64_system_exceptions_runtime_hvc + aarch64_system_exceptions_debug_halt + aarch64_system_exceptions_debug_breakpoint + aarch64_system_barriers_isb + aarch64_system_barriers_dsb + aarch64_system_barriers_dmb + aarch64_memory_vector_single_post_inc + aarch64_memory_vector_single_no_wb + aarch64_memory_vector_multiple_post_inc + aarch64_memory_vector_multiple_no_wb + aarch64_memory_single_simdfp_register + aarch64_memory_single_simdfp_immediate_unsigned + aarch64_memory_single_simdfp_immediate_signed_pre_idx + aarch64_memory_single_simdfp_immediate_signed_post_idx + aarch64_memory_single_simdfp_immediate_signed_offset_normal + aarch64_memory_single_general_register + aarch64_memory_single_general_immediate_unsigned + aarch64_memory_single_general_immediate_signed_pre_idx + aarch64_memory_single_general_immediate_signed_post_idx + aarch64_memory_single_general_immediate_signed_pac + aarch64_memory_single_general_immediate_signed_offset_unpriv + aarch64_memory_single_general_immediate_signed_offset_normal + aarch64_memory_single_general_immediate_signed_offset_lda_stl + aarch64_memory_pair_simdfp_pre_idx + aarch64_memory_pair_simdfp_post_idx + aarch64_memory_pair_simdfp_offset + aarch64_memory_pair_simdfp_no_alloc + aarch64_memory_pair_general_pre_idx + aarch64_memory_pair_general_post_idx + aarch64_memory_pair_general_offset + aarch64_memory_pair_general_no_alloc + aarch64_memory_ordered_rcpc + aarch64_memory_ordered + aarch64_memory_literal_simdfp + aarch64_memory_literal_general + aarch64_memory_exclusive_single + aarch64_memory_exclusive_pair + aarch64_memory_atomicops_swp + aarch64_memory_atomicops_ld + aarch64_memory_atomicops_cas_single + aarch64_memory_atomicops_cas_pair + aarch64_integer_tags_mcsubtag + aarch64_integer_tags_mcsettagarray + aarch64_integer_tags_mcsettagandzeroarray + aarch64_integer_tags_mcinserttagmask + aarch64_integer_tags_mcinsertrandomtag + aarch64_integer_tags_mcgettagarray + aarch64_integer_tags_mcgettag + aarch64_integer_tags_mcaddtag + aarch64_integer_shift_variable + aarch64_integer_pac_strip_hint + aarch64_integer_pac_pacib_hint + aarch64_integer_pac_pacib_dp_1src + aarch64_integer_pac_pacia_hint + aarch64_integer_pac_pacia_dp_1src + aarch64_integer_pac_pacdb_dp_1src + aarch64_integer_pac_pacda_dp_1src + aarch64_integer_pac_autib_hint + aarch64_integer_pac_autib_dp_1src + aarch64_integer_pac_autia_hint + aarch64_integer_pac_autia_dp_1src + aarch64_integer_pac_autdb_dp_1src + aarch64_integer_pac_autda_dp_1src + aarch64_integer_logical_shiftedreg + aarch64_integer_logical_immediate + aarch64_integer_ins_ext_insert_movewide + aarch64_integer_ins_ext_extract_immediate + aarch64_integer_flags_xaflag + aarch64_integer_flags_setf + aarch64_integer_flags_rmif + aarch64_integer_flags_cfinv + aarch64_integer_flags_axflag + aarch64_integer_crc + aarch64_integer_conditional_select + aarch64_integer_conditional_compare_register + aarch64_integer_conditional_compare_immediate + aarch64_integer_bitfield + aarch64_integer_arithmetic_rev + aarch64_integer_arithmetic_rbit + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddresssetflags + aarch64_integer_arithmetic_pointer_mcsubtracttaggedaddress + aarch64_integer_arithmetic_mul_widening_64_128hi + aarch64_integer_arithmetic_mul_widening_32_64 + aarch64_integer_arithmetic_mul_uniform_add_sub + aarch64_integer_arithmetic_div + aarch64_integer_arithmetic_cnt + aarch64_integer_arithmetic_address_pc_rel + aarch64_integer_arithmetic_add_sub_shiftedreg + aarch64_integer_arithmetic_add_sub_immediate + aarch64_integer_arithmetic_add_sub_extendedreg + aarch64_integer_arithmetic_add_sub_carry + aarch64_float_move_fp_select + aarch64_float_move_fp_imm + aarch64_float_convert_int + aarch64_float_convert_fp + aarch64_float_convert_fix + aarch64_float_compare_uncond + aarch64_float_compare_cond + aarch64_float_arithmetic_unary + aarch64_float_arithmetic_round_frint_32_64 + aarch64_float_arithmetic_round_frint + aarch64_float_arithmetic_mul_product + aarch64_float_arithmetic_mul_add_sub + aarch64_float_arithmetic_max_min + aarch64_float_arithmetic_div + aarch64_float_arithmetic_add_sub + aarch64_branch_unconditional_register + aarch64_branch_unconditional_immediate + aarch64_branch_unconditional_eret + aarch64_branch_unconditional_dret + aarch64_branch_conditional_test + aarch64_branch_conditional_cond + aarch64_branch_conditional_compare + Offline_utils + ) + (libraries asli.libASL-stage0)) +(alias (name default) (deps (package aslp_offline) ../aslp_offline.install)) \ No newline at end of file diff --git a/offlineASL/gen-command b/offlineASL/gen-command new file mode 100644 index 00000000..322359ed --- /dev/null +++ b/offlineASL/gen-command @@ -0,0 +1 @@ +:gen A64 aarch64.+ ocaml false . diff --git a/offlineASL/offline.ml b/offlineASL/offline.ml deleted file mode 100644 index 1d913f9b..00000000 --- a/offlineASL/offline.ml +++ /dev/null @@ -1,12 +0,0 @@ -(* AUTO-GENERATED LIFTER FILE *) - -open Offline_utils -open Decode_tests - -let f_A64_decoder v_enc : unit = - failwith "unsupported" - -let run enc = - reset_ir (); - f_A64_decoder enc; - get_ir () diff --git a/offlineASL/offline_utils.ml b/offlineASL/template_offline_utils.ml similarity index 99% rename from offlineASL/offline_utils.ml rename to offlineASL/template_offline_utils.ml index d0755924..6411309b 100644 --- a/offlineASL/offline_utils.ml +++ b/offlineASL/template_offline_utils.ml @@ -1,4 +1,4 @@ -open LibASL +open LibASL_stage0 open Asl_ast open Primops diff --git a/tests/aslt/dune b/tests/aslt/dune index d7064bc8..6d39c012 100644 --- a/tests/aslt/dune +++ b/tests/aslt/dune @@ -15,8 +15,10 @@ (cram (applies_to *) + (package asli) (deps (package asli) (glob_files *.txt))) (cram (applies_to * \ test_dis) + (package asli) (deps ./antlr.jar ./Semantics.g4)) diff --git a/tests/coverage/dune b/tests/coverage/dune index 9de2105d..7596c293 100644 --- a/tests/coverage/dune +++ b/tests/coverage/dune @@ -13,7 +13,7 @@ (action (copy ./run.sh ./run))) (rule - (deps (package asli) ./encodings) + (deps (package aslp_offline) ./encodings) (action (copy ./off_run.sh ./off_run))) (rule (with-stdout-to cov_integer (run ./run "aarch64_integer.+"))) diff --git a/tests/dune b/tests/dune index 9ebb56a6..20e6557e 100644 --- a/tests/dune +++ b/tests/dune @@ -2,11 +2,13 @@ (modes exe) (flags (-cclib -lstdc++)) (modules test_asl) - (libraries alcotest asli.libASL)) + (libraries alcotest asli.libASL) + (package asli)) (test (name bdd_ops) (modes exe) (flags (-cclib -lstdc++)) -(modules bdd_ops) - (libraries alcotest asli.libASL)) + (modules bdd_ops) + (libraries alcotest asli.libASL) + (package asli))