Skip to content

Commit

Permalink
fix coverage.sh with bundled semantics.
Browse files Browse the repository at this point in the history
  • Loading branch information
katrinafyi committed Feb 9, 2024
1 parent 1f40b75 commit 5ee10fc
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 11 deletions.
10 changes: 9 additions & 1 deletion bin/asli.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)");
] )
Expand Down Expand Up @@ -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";
Expand All @@ -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;

Expand Down
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)
Expand All @@ -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
Expand Down
10 changes: 6 additions & 4 deletions libASL/eval.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 5ee10fc

Please sign in to comment.