Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use dune sites to install asl files #38

Merged
merged 4 commits into from
Feb 9, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
fix coverage.sh with bundled semantics.
katrinafyi committed Feb 9, 2024

Verified

This commit was signed with the committer’s verified signature.
WengerK Kevin Wenger
commit 5ee10fc7ce56bed23c9f719083be8d389f16c887
10 changes: 9 additions & 1 deletion bin/asli.ml
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ let opt_prelude : string ref = ref "prelude.asl"
let opt_filenames : string list ref = ref []
let opt_print_version = ref false
let opt_no_default_aarch64 = ref false
let opt_print_aarch64_dir = ref false
let opt_verbose = ref false

let opt_debug_level = ref 0
@@ -291,6 +292,7 @@ let options = Arg.align ([
( "-x", Arg.Set_int opt_debug_level, " Debugging output");
( "-v", Arg.Set opt_verbose, " Verbose output");
( "--no-aarch64", Arg.Set opt_no_default_aarch64 , " Disable bundled AArch64 semantics");
( "--aarch64-dir", Arg.Set opt_print_aarch64_dir, " Print directory of bundled AArch64 semantics");
( "--version", Arg.Set opt_print_version, " Print version");
( "--prelude", Arg.Set_string opt_prelude," ASL prelude file (default: ./prelude.asl)");
] )
@@ -318,6 +320,10 @@ let _ =

let main () =
if !opt_print_version then Printf.printf "%s\n" version
else if !opt_print_aarch64_dir then
match aarch64_asl_dir with
| Some d -> Printf.printf "%s\n" d
| None -> (Printf.eprintf "Unable to retrieve installed asl directory\n"; exit 1)
else begin
if !opt_verbose then List.iter print_endline banner;
if !opt_verbose then print_endline "\nType :? for help";
@@ -330,11 +336,13 @@ let main () =
"Warning: asl file arguments ignored without --no-aarch64 (%s)\n"
(String.concat " " !opt_filenames)
else ();
aarch64_evaluation_environment ~verbose:!opt_verbose ()
aarch64_evaluation_environment ~verbose:!opt_verbose ();
end in
let env = (match env_opt with
| Some e -> e
| None -> failwith "Unable to build evaluation environment.") in
if not !opt_no_default_aarch64 then
opt_filenames := snd (Option.get aarch64_asl_files); (* (!) should be safe if environment built successfully. *)
if !opt_verbose then Printf.printf "Built evaluation environment\n";
Dis.debug_level := !opt_debug_level;

17 changes: 11 additions & 6 deletions coverage.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
#!/bin/bash

# performs regression testing based on :coverage of particular groups of instructions

INSTRUCTION_GROUPS="aarch64_integer.+ aarch64_branch.+"
INSTRUCTION_GROUPS=''
INSTRUCTION_GROUPS+='aarch64_integer.+'
INSTRUCTION_GROUPS+=' aarch64_branch.+'
INSTRUCTION_GROUPS+=' aarch64_float_.+'
INSTRUCTION_GROUPS+=' aarch64_vector_.+'
INSTRUCTION_GROUPS+=' aarch64_memory_.+'
ASL_FILES="prelude.asl ./mra_tools/arch/regs.asl ./mra_tools/types.asl ./mra_tools/arch/arch.asl ./mra_tools/arch/arch_instrs.asl ./mra_tools/arch/arch_decode.asl ./mra_tools/support/aes.asl ./mra_tools/support/barriers.asl ./mra_tools/support/debug.asl ./mra_tools/support/feature.asl ./mra_tools/support/hints.asl ./mra_tools/support/interrupts.asl ./mra_tools/support/memory.asl ./mra_tools/support/stubs.asl ./mra_tools/support/fetchdecode.asl"
ASL_FILES+=" tests/override.asl"
ASL_FILES+=" tests/override.prj"

COVERAGE_DIR="./tests/coverage"
COVERAGE_TEMP=$(mktemp -d)
@@ -26,21 +24,28 @@ fi
mkdir -p "$COVERAGE_DIR"
mkdir -p "$COVERAGE_TEMP"

asl_dir="$(dune exec asli -- --aarch64-dir)"

tar xf encodings.tar.gz || exit 1

RESULT=0
for inst in $INSTRUCTION_GROUPS; do
fname="$(tr -c '[:alnum:]_' _ <<< "$inst")"
new="$COVERAGE_TEMP/$fname"
diff="$COVERAGE_TEMP/$fname.diff"
echo "::group::$inst"
echo "$new"
time echo ":coverage A64 $inst" | dune exec asli $ASL_FILES > "$new"
time echo ":coverage A64 $inst" | dune exec asli > "$new"
old="$COVERAGE_DIR/$fname"

sed -i "s#$asl_dir#.#g" "$new"

if [[ $MODE == update ]]; then
echo "overwriting coverage results with updated results."
cp -v "$new" "$old"
else
echo "testing coverage with previous results."
diff -Nu "$old" "$new" > "$diff"
diff -Nu --color=auto "$old" "$new"
RESULT=$(($RESULT + $?))
fi
10 changes: 6 additions & 4 deletions libASL/eval.ml
Original file line number Diff line number Diff line change
@@ -1335,19 +1335,21 @@ let evaluation_environment (prelude: string) (files: string list) (verbose: bool
None
)

let aarch64_asl_dir: string option =
List.nth_opt Res.Sites.aslfiles 0

let aarch64_asl_files: (string * string list) option =
let aarch64_file_load_order =
["mra_tools/arch/regs.asl"; "mra_tools/types.asl"; "mra_tools/arch/arch.asl"; "mra_tools/arch/arch_instrs.asl";
"mra_tools/arch/arch_decode.asl"; "mra_tools/support/aes.asl"; "mra_tools/support/barriers.asl"; "mra_tools/support/debug.asl";
"mra_tools/support/feature.asl"; "mra_tools/support/hints.asl"; "mra_tools/support/interrupts.asl"; "mra_tools/support/memory.asl";
"mra_tools/support/stubs.asl"; "mra_tools/support/fetchdecode.asl"; "tests/override.asl"; "tests/override.prj"]
in match Res.Sites.aslfiles with
| [dir] ->
in Option.bind aarch64_asl_dir (fun dir ->
let filenames = List.map (Filename.concat dir) aarch64_file_load_order in
let prelude = Filename.concat dir "prelude.asl" in
Some (prelude, filenames)
| _ -> None
Some (prelude, filenames))

(** XXX: .prj files NOT evaluated in this environment! *)
let aarch64_evaluation_environment ?(verbose = false) (): Env.t option =
Option.bind aarch64_asl_files
(fun (prelude, filenames) -> evaluation_environment prelude filenames verbose)