diff --git a/asli.opam b/asli.opam index c36f30e1..f933b769 100644 --- a/asli.opam +++ b/asli.opam @@ -10,11 +10,11 @@ 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"} "ocaml" {>= "4.14"} @@ -46,4 +46,4 @@ build: [ "@doc" {with-doc} ] ] -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..0c766804 --- /dev/null +++ b/aslp_offline.opam @@ -0,0 +1,31 @@ +# 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.8"} + "ocaml" {>= "4.14"} + "asli" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/UQ-PAC/aslp.git" diff --git a/bin/dune b/bin/dune index 7b572c03..18d0b112 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,6 +38,7 @@ (executable (name offline_coverage) (public_name asloff-coverage) + (package aslp_offline) (modes exe) (modules offline_coverage) (flags (-cclib -lstdc++)) @@ -44,6 +47,7 @@ (executable (name offline_sem) (public_name asloff-sem) + (package aslp_offline) (modes exe) (modules offline_sem) (flags (-cclib -lstdc++)) diff --git a/bin/offline_coverage.ml b/bin/offline_coverage.ml index 595b8e7a..d538241f 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 ~pc:0 bv in Result.Ok stmts with | e -> Result.Error (Op_DisFail e) diff --git a/dune-project b/dune-project index ec36847e..e54236f5 100644 --- a/dune-project +++ b/dune-project @@ -31,12 +31,22 @@ ) ) +(package + (name aslp_offline) + (synopsis "AArch64 Offline lifter") + (description "" ) + (depends + ("ocaml" (>= "4.14")) + "asli" + ) +) + (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/dune b/libASL/dune index a2cd50c3..209d14a2 100644 --- a/libASL/dune +++ b/libASL/dune @@ -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/ocaml_backend.ml b/libASL/ocaml_backend.ml index 8ade1914..564c91af 100644 --- a/libASL/ocaml_backend.ml +++ b/libASL/ocaml_backend.ml @@ -343,6 +343,7 @@ let write_fn name (ret_tyo,_,targs,args,_,body) st = 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 = @@ -378,16 +379,45 @@ let write_decoder_file use_pc fn fnsig deps dir = close_out oc; 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") in + Printf.fprintf oc " + (rule (targets \n%s) + (deps gen-command) + (action (chdir %%{workspace_root} + (with-stdin-from %s/gen-command (run asli)) + )))" + target_gen_files dir ; + Printf.fprintf oc "\n\n"; + Printf.fprintf oc " + (library + (name offlineASL) + (public_name aslp_offline.%s) + (flags + (:standard -w -27 -w -33 -cclib -lstdc++)) + (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))" + + (* Write the dune build file *) let write_dune_file use_pc files dir = let oc = open_out (dir ^ "/dune") in Printf.fprintf oc "; AUTO-GENERATED BY OCAML BACKEND (library (name offlineASL) - (public_name asli.offline) + (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; @@ -395,13 +425,19 @@ let write_dune_file use_pc files dir = (libraries asli.libASL))"; 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 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 config.use_pc dfn dfnsig files dir in - write_dune_file config.use_pc (decoder::files@global_deps) dir + write_new_dune_file config.use_pc (decoder::files@global_deps) dir ; + write_ibi dir module OcamlBackend : Backend = struct let run ~(config:conf) dfn dfnsig tests fns = run config dfn dfnsig tests fns 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 49e4a6a4..02951f4f 100644 --- a/offlineASL/dune +++ b/offlineASL/dune @@ -1,12 +1,792 @@ -; AUTO-GENERATED BY OCAML BACKEND -(library - (name offlineASL) - (public_name asli.offline) - (flags - (:standard -w -27 -w -33 -cclib -lstdc++)) - (modules +(rule (targets + 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_ssbb.ml + aarch64_system_barriers_sb.ml + aarch64_system_barriers_pssbb.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_mcsettagpre.ml + aarch64_integer_tags_mcsettagpost.ml + aarch64_integer_tags_mcsettagpairpre.ml + aarch64_integer_tags_mcsettagpairpost.ml + aarch64_integer_tags_mcsettagpairandzerodatapre.ml + aarch64_integer_tags_mcsettagpairandzerodatapost.ml + aarch64_integer_tags_mcsettagpairandzerodata.ml + aarch64_integer_tags_mcsettagpair.ml + aarch64_integer_tags_mcsettagarray.ml + aarch64_integer_tags_mcsettagandzerodatapre.ml + aarch64_integer_tags_mcsettagandzerodatapost.ml + aarch64_integer_tags_mcsettagandzerodata.ml + aarch64_integer_tags_mcsettagandzeroarray.ml + aarch64_integer_tags_mcsettaganddatapairpre.ml + aarch64_integer_tags_mcsettaganddatapairpost.ml + aarch64_integer_tags_mcsettaganddatapair.ml + aarch64_integer_tags_mcsettag.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 (chdir %{workspace_root} + (progn (with-stdin-from offlineASL/gen-command (run asli)))) + )) + + + (library + (name offlineASL) + (public_name aslp_offline.pc_aarch64) + (flags + (:standard -w -27 -w -33 -cclib -lstdc++)) + (modules offline decode_tests - offline_utils + 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_ssbb + aarch64_system_barriers_sb + aarch64_system_barriers_pssbb + 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_mcsettagpre + aarch64_integer_tags_mcsettagpost + aarch64_integer_tags_mcsettagpairpre + aarch64_integer_tags_mcsettagpairpost + aarch64_integer_tags_mcsettagpairandzerodatapre + aarch64_integer_tags_mcsettagpairandzerodatapost + aarch64_integer_tags_mcsettagpairandzerodata + aarch64_integer_tags_mcsettagpair + aarch64_integer_tags_mcsettagarray + aarch64_integer_tags_mcsettagandzerodatapre + aarch64_integer_tags_mcsettagandzerodatapost + aarch64_integer_tags_mcsettagandzerodata + aarch64_integer_tags_mcsettagandzeroarray + aarch64_integer_tags_mcsettaganddatapairpre + aarch64_integer_tags_mcsettaganddatapairpost + aarch64_integer_tags_mcsettaganddatapair + aarch64_integer_tags_mcsettag + 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)) + (libraries asli.libASL)) diff --git a/offlineASL/gen-command b/offlineASL/gen-command new file mode 100644 index 00000000..bf67c811 --- /dev/null +++ b/offlineASL/gen-command @@ -0,0 +1 @@ +:gen A64 aarch64.+ ocaml false offlineASL/ diff --git a/offlineASL/offline.ml b/offlineASL/offline.ml deleted file mode 100644 index 7e87b0ad..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 ?pc 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 74e84992..8fe9463d 100644 --- a/offlineASL/offline_utils.ml +++ b/offlineASL/template_offline_utils.ml @@ -191,6 +191,8 @@ let f_AtomicEnd () = push_stmt (Stmt_TCall (FIdent ("AtomicEnd", 0), [], [], Unknown)) let f_gen_AArch64_MemTag_set x y z: unit = failwith "MemTag_set unsupported" +let f_gen_AArch64_MemTag_read x y = + failwith "MemTag_set unsupported" (* Prim bool ops *) let f_gen_and_bool e1 e2 =