Change hw6 to an unsolved version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
0c04936ccf
commit
ee01a8f5b2
186 changed files with 9605 additions and 4019 deletions
|
|
@ -45,12 +45,40 @@ let liveness_analysis_tests =
|
|||
; "llprograms/analysis19.ll", lblm[
|
||||
"_entry", uids[]
|
||||
]
|
||||
; "llprograms/analysis18.ll", lblm[
|
||||
"_entry", uids[]
|
||||
; "bar", uids["1"; "2"; "3"; "4"]
|
||||
; "foo", uids["1"; "sa"]
|
||||
]
|
||||
; "llprograms/analysis16.ll", lblm[
|
||||
"_entry", uids[]
|
||||
; "continue_loop", uids["1"; "2"; "5"]
|
||||
; "else", uids["1"; "2"; "5"; "7"]
|
||||
; "foo", uids["1"; "2"]
|
||||
; "if", uids["1"; "2"; "5"; "7"]
|
||||
; "loop", uids["1"; "2"]
|
||||
; "reta", uids["1"]
|
||||
; "retb", uids["2"]
|
||||
]
|
||||
; "llprograms/analysis15.ll", lblm[
|
||||
"_entry", uids[]
|
||||
]
|
||||
; "llprograms/analysis14.ll", lblm[
|
||||
"_entry", uids[]
|
||||
]
|
||||
; "llprograms/analysis13.ll", lblm[
|
||||
"_entry", uids[]
|
||||
; "correct", uids["7"]
|
||||
; "five", uids["1"; "6"; "7"]
|
||||
; "four", uids["1"; "5"; "6"; "7"]
|
||||
; "one", uids["1"; "2"; "3"; "4"; "5"; "6"; "7"]
|
||||
; "three", uids["1"; "4"; "5"; "6"; "7"]
|
||||
; "two", uids["1"; "3"; "4"; "5"; "6"; "7"]
|
||||
; "wrong", uids["1"]
|
||||
]
|
||||
; "llprograms/analysis12.ll", lblm[
|
||||
"_entry", uids[]
|
||||
]
|
||||
; "llprograms/analysis11.ll", lblm[
|
||||
"_entry", uids[]
|
||||
; "foo", uids[]
|
||||
|
|
@ -67,7 +95,6 @@ let liveness_analysis_tests =
|
|||
]
|
||||
]
|
||||
|
||||
|
||||
let alias_analysis_tests =
|
||||
let open Alias.SymPtr in
|
||||
[ "llprograms/analysis9.ll", lblm[
|
||||
|
|
@ -113,27 +140,65 @@ let alias_analysis_tests =
|
|||
; "llprograms/analysis19.ll", lblm[
|
||||
"_entry", uidm["1", Unique; "2", MayAlias; "arcv", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis18.ll", lblm[
|
||||
"_entry", uidm["1", Unique; "arcv", MayAlias]
|
||||
; "bar", uidm["1", Unique; "arcv", MayAlias; "sa", Unique; "sb", Unique; "sc", Unique]
|
||||
; "foo", uidm["1", Unique; "arcv", MayAlias; "sa", Unique; "sb", Unique; "sc", Unique]
|
||||
]
|
||||
; "llprograms/analysis16.ll", lblm[
|
||||
"_entry", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "continue_loop", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "else", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "foo", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "if", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "loop", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "reta", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
; "retb", uidm["1", Unique; "2", Unique; "arcv", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis15.ll", lblm[
|
||||
"_entry", uidm["arcv", MayAlias; "head", MayAlias; "link", MayAlias; "link2", MayAlias; "next", MayAlias; "next2", MayAlias; "val", MayAlias; "val2", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis14.ll", lblm[
|
||||
"_entry", uidm["1", MayAlias; "2", MayAlias; "arcv", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis13.ll", lblm[
|
||||
"_entry", uidm["arcv", MayAlias]
|
||||
; "correct", uidm["arcv", MayAlias]
|
||||
; "five", uidm["arcv", MayAlias]
|
||||
; "four", uidm["arcv", MayAlias]
|
||||
; "one", uidm["arcv", MayAlias]
|
||||
; "three", uidm["arcv", MayAlias]
|
||||
; "two", uidm["arcv", MayAlias]
|
||||
; "wrong", uidm["arcv", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis12.ll", lblm[
|
||||
"_entry", uidm["arcv", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis11.ll", lblm[
|
||||
"_entry", uidm["argv", MayAlias]
|
||||
; "foo", uidm["4", Unique; "5", Unique]
|
||||
; "foo", uidm["4", Unique; "5", Unique]
|
||||
]
|
||||
; "llprograms/analysis10.ll", lblm[
|
||||
"_entry", uidm["4", Unique; "7", Unique; "argv", MayAlias]
|
||||
; "else", uidm["4", Unique; "7", Unique; "argv", MayAlias]
|
||||
; "merge", uidm["4", Unique; "7", Unique; "argv", MayAlias]
|
||||
; "then", uidm["4", Unique; "7", Unique; "argv", MayAlias]
|
||||
]
|
||||
; "llprograms/analysis1.ll", lblm[
|
||||
"_entry", uidm["3", Unique; "arcv", MayAlias]
|
||||
; "l1", uidm["3", MayAlias; "4", MayAlias; "arcv", MayAlias]
|
||||
; "l1", uidm["3", MayAlias; "4", MayAlias; "arcv", MayAlias]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
|
||||
let constprop_analysis_tests =
|
||||
let open Constprop.SymConst in
|
||||
[ "llprograms/analysis8.ll", lblm[
|
||||
[ "llprograms/analysis9.ll", lblm[
|
||||
"_entry", uidm["1", NonConst; "2", NonConst; "argc", NonConst; "argv", NonConst; "d0", Const (1L)]
|
||||
; "body", uidm["1", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "argc", NonConst; "argv", NonConst; "d0", Const (1L); "d1", Const (5L); "d2", Const (11L)]
|
||||
; "end", uidm["1", NonConst; "10", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "argc", NonConst; "argv", NonConst; "d0", Const (1L); "d1", Const (5L); "d2", Const (11L)]
|
||||
; "guard", uidm["1", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "argc", NonConst; "argv", NonConst; "d0", Const (1L); "d1", Const (5L); "d2", Const (11L)]
|
||||
]
|
||||
; "llprograms/analysis8.ll", lblm[
|
||||
"_entry", uidm["a", Const (1L); "argc", NonConst; "argv", NonConst; "b", Const (3L); "c", Const (6L); "d", Const (10L); "e", Const (15L); "f", Const (21L); "g", Const (28L); "h", Const (36L); "i", Const (45L); "j", Const (55L); "k", Const (66L); "l", Const (78L); "m", Const (91L); "n", NonConst; "o", NonConst; "p", NonConst; "q", NonConst; "r", NonConst; "s", NonConst; "t", NonConst; "tmp1", NonConst; "tmp2", NonConst; "u", NonConst; "v", NonConst; "w", NonConst; "x", NonConst; "y", NonConst; "z", NonConst]
|
||||
]
|
||||
; "llprograms/analysis7.ll", lblm[
|
||||
|
|
@ -176,16 +241,44 @@ let constprop_analysis_tests =
|
|||
; "llprograms/analysis19.ll", lblm[
|
||||
"_entry", uidm["1", NonConst; "2", NonConst; "3", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
]
|
||||
; "llprograms/analysis18.ll", lblm[
|
||||
"_entry", uidm["1", NonConst; "2", Const (14L); "3", Const (42L); "4", Const (40L); "arcv", NonConst; "argc", NonConst]
|
||||
; "bar", uidm["1", NonConst; "2", Const (14L); "3", Const (42L); "4", Const (40L); "arcv", NonConst; "argc", NonConst; "sa", NonConst; "sb", NonConst; "sc", NonConst]
|
||||
; "foo", uidm["1", NonConst; "2", Const (14L); "3", Const (42L); "4", Const (40L); "arcv", NonConst; "argc", NonConst; "res", NonConst; "sa", NonConst; "sb", NonConst; "sc", NonConst; "v1", NonConst; "v2", NonConst; "v3", NonConst; "v4", NonConst]
|
||||
]
|
||||
; "llprograms/analysis17.ll", lblm[
|
||||
"_entry", uidm["i1", Const (2L); "i2", Const (3L); "sx", NonConst; "sy", NonConst; "v1", NonConst; "v2", NonConst; "v3", NonConst; "x", NonConst; "y", NonConst]
|
||||
; "l1", uidm["a1", NonConst; "arg1", Const (12L); "i1", Const (2L); "i2", Const (3L); "sx", NonConst; "sy", NonConst; "v1", NonConst; "v2", NonConst; "v3", NonConst; "v4", NonConst; "x", NonConst; "y", NonConst]
|
||||
]
|
||||
; "llprograms/analysis16.ll", lblm[
|
||||
"_entry", uidm["1", NonConst; "2", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "continue_loop", uidm["1", NonConst; "10", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "else", uidm["1", NonConst; "10", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "foo", uidm["1", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "if", uidm["1", NonConst; "10", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "loop", uidm["1", NonConst; "10", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "reta", uidm["1", NonConst; "10", NonConst; "11", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
; "retb", uidm["1", NonConst; "12", NonConst; "2", NonConst; "3", NonConst; "4", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
]
|
||||
; "llprograms/analysis15.ll", lblm[
|
||||
"_entry", uidm["1", NonConst; "arcv", NonConst; "argc", NonConst; "head", NonConst; "link", NonConst; "link2", NonConst; "next", NonConst; "next2", NonConst; "val", NonConst; "val2", NonConst]
|
||||
]
|
||||
; "llprograms/analysis14.ll", lblm[
|
||||
"_entry", uidm["1", NonConst; "2", NonConst; "3", Const (2L); "4", Const (0L); "arcv", NonConst; "argc", NonConst]
|
||||
]
|
||||
; "llprograms/analysis13.ll", lblm[
|
||||
"_entry", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L)]
|
||||
; "correct", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L); "cmp3", Const (1L); "cmp4", Const (1L); "cmp5", Const (1L); "cmp6", Const (1L)]
|
||||
; "five", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L); "cmp3", Const (1L); "cmp4", Const (1L); "cmp5", Const (1L); "cmp6", Const (1L)]
|
||||
; "four", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L); "cmp3", Const (1L); "cmp4", Const (1L); "cmp5", Const (1L)]
|
||||
; "one", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L)]
|
||||
; "three", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L); "cmp3", Const (1L); "cmp4", Const (1L)]
|
||||
; "two", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L); "cmp3", Const (1L)]
|
||||
; "wrong", uidm["1", Const (0L); "2", Const (1L); "3", Const (2L); "4", Const (3L); "5", Const (4L); "6", Const (5L); "7", Const (7L); "arcv", NonConst; "argc", NonConst; "cmp1", Const (1L); "cmp2", Const (1L); "cmp3", Const (1L); "cmp4", Const (1L); "cmp5", Const (1L); "cmp6", Const (1L)]
|
||||
]
|
||||
; "llprograms/analysis12.ll", lblm[
|
||||
"_entry", uidm["1", Const (14L); "2", Const (-1L); "3", Const (1L); "4", Const (2L); "5", Const (0L); "6", Const (0L); "7", Const (14L); "8", Const (14L); "9", Const (14L); "arcv", NonConst; "argc", NonConst]
|
||||
]
|
||||
; "llprograms/analysis11.ll", lblm[
|
||||
"_entry", uidm["1", Const (1L); "2", Const (2L); "3", Const (3L); "argc", NonConst; "argv", NonConst]
|
||||
; "foo", uidm["4", NonConst; "5", NonConst; "6", NonConst; "7", NonConst; "8", NonConst; "9", NonConst]
|
||||
|
|
@ -201,4 +294,3 @@ let constprop_analysis_tests =
|
|||
; "l1", uidm["1", Const (49L); "2", NonConst; "3", NonConst; "4", NonConst; "arcv", NonConst; "argc", NonConst]
|
||||
]
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -4,11 +4,6 @@
|
|||
(:standard -g -w "+a-4-7-9-26-27-29-30-32..42-44-45-48-50-60-66..70")
|
||||
)))
|
||||
|
||||
(library
|
||||
(name studenttests)
|
||||
(modules studenttests)
|
||||
(libraries util x86 ll oat))
|
||||
|
||||
(library
|
||||
(name gradedtests)
|
||||
(modules gradedtests analysistests)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ let exec_ll_ast path ll_ast args extra_files =
|
|||
let output_path = !Platform.output_path in
|
||||
|
||||
(* First - optimize the ll ast *)
|
||||
let _ = Opt.opt_level := 1 in
|
||||
let _ = Opt.do_opt := true in
|
||||
let ll_ast = Opt.optimize ll_ast in
|
||||
|
||||
(* Write out the optimized ll file for debugging purposes *)
|
||||
|
|
@ -86,23 +86,23 @@ let compile_with_config live regalloc ll_ast =
|
|||
|
||||
let assert_quality fn ll_ast =
|
||||
if not !pass_all then failwith "Your register allocator failed a correctness test" else
|
||||
let _ = Opt.opt_level := 1 in
|
||||
let _ = Opt.do_opt := true in
|
||||
let ll_ast = Opt.optimize ll_ast in
|
||||
let h_greedy, size_greedy, x86_greedy = compile_with_config "dataflow" "greedy" ll_ast in
|
||||
let h_better, size_better, x86_better = compile_with_config "dataflow" "better" ll_ast in
|
||||
let mem_greedy = Registers.memop_of_prog x86_greedy in
|
||||
let mem_better = Registers.memop_of_prog x86_better in
|
||||
let _ =
|
||||
if !Driver.print_regs_flag then begin
|
||||
Printf.printf "greedy sz: %4d mem: %4d\t\tbetter sz: %4d mem: %4d \t diff_sz: %4d diff_mem: %4d - %s\n"
|
||||
let msg =
|
||||
Printf.sprintf "greedy sz: %4d mem: %4d\t\tbetter sz: %4d mem: %4d \t diff_sz: %4d diff_mem: %4d - %s\n"
|
||||
size_greedy mem_greedy size_better mem_better (size_greedy - size_better) (mem_greedy - mem_better) fn
|
||||
end
|
||||
in
|
||||
let _ = if !Driver.print_regs_flag then begin Printf.printf "%s" msg end
|
||||
in
|
||||
if
|
||||
mem_better < mem_greedy then ()
|
||||
else if
|
||||
size_better < size_greedy then ()
|
||||
else failwith @@ Printf.sprintf "greedy is better"
|
||||
else failwith @@ Printf.sprintf "GREEDY is better\n%s" msg
|
||||
|
||||
let assert_quality_oat fn () =
|
||||
let oat_ast = parse_oat_file fn in
|
||||
|
|
@ -322,8 +322,10 @@ let greedy_is_good_tests = [
|
|||
("hw4programs/run38.oat", "", "31");
|
||||
("hw4programs/run40.oat", "", "8");
|
||||
("hw4programs/run60.oat", "", "85");
|
||||
("hw4programs/heap.oat", "", "1");
|
||||
("hw5programs/ifq2.oat", "", "5");
|
||||
("hw5programs/length1.oat", "", "5");
|
||||
("hw4programs/lcs.oat", "", "OAT0");
|
||||
]
|
||||
|
||||
|
||||
|
|
@ -361,7 +363,7 @@ let hw4_easy_tests = [
|
|||
("hw4programs/run42.oat", "", "2");
|
||||
("hw4programs/run49.oat", "", "abc0");
|
||||
("hw4programs/run50.oat", "", "abcde0");
|
||||
("hw4programs/run61.oat", "", "3410");
|
||||
("hw4programs/run61.oat", "", "131");
|
||||
]
|
||||
|
||||
let hw4_medium_tests = [
|
||||
|
|
@ -401,9 +403,19 @@ let hw4_hard_tests = [
|
|||
("hw4programs/msort2.oat", "", "~}|{zyxwvu uvwxyz{|}~ 0");
|
||||
("hw4programs/selectionsort.oat", "", "01253065992000");
|
||||
("hw4programs/matrixmult.oat", "", "19 16 13 23 \t5 6 7 6 \t19 16 13 23 \t5 6 7 6 \t0");
|
||||
("hw4programs/binary_search.oat", "", "Correct!0");
|
||||
("hw4programs/xor_shift.oat", "", "838867572\n22817190600");
|
||||
("hw4programs/gcd.oat", "", "16")
|
||||
]
|
||||
|
||||
let hw4_old_student_tests = [
|
||||
("hw4programs/binary_search.oat", "", "Correct!0")
|
||||
; ("hw4programs/xor_shift.oat", "", "838867572\n22817190600")
|
||||
; ("hw4programs/sieve.oat", "", "25")
|
||||
; ("hw4programs/fibo.oat", "", "0")
|
||||
; ("hw4programs/lfsr.oat", "", "TFTF FFTT0")
|
||||
; ("hw4programs/gnomesort.oat", "", "01253065992000")
|
||||
; ("hw4programs/josh_joyce_test.oat", "", "0")
|
||||
; ("hw4programs/gcd.oat", "", "16")
|
||||
; ("hw4programs/insertion_sort.oat", "", "42")
|
||||
; ("hw4programs/maxsubsequence.oat", "", "107")
|
||||
]
|
||||
|
||||
let struct_tests = [
|
||||
|
|
@ -438,6 +450,7 @@ let regalloc_challenge_tests = [
|
|||
("hw4programs/run54.oat", "", "10");
|
||||
("hw4programs/run55.oat", "", "6");
|
||||
("hw4programs/qsort.oat", "", "kpyf{shomfhkmopsy{255");
|
||||
("hw4programs/count_sort.oat", "", "AFHZAAEYC\nAAACEFHYZ0");
|
||||
]
|
||||
|
||||
let new_tests = [
|
||||
|
|
@ -447,81 +460,94 @@ let new_tests = [
|
|||
("hw5programs/initarr2.oat", "", "2");
|
||||
]
|
||||
|
||||
|
||||
let oat_regalloc_quality_tests =
|
||||
hw4_easiest_tests
|
||||
@ hw4_path_tests
|
||||
@ hw4_easy_tests
|
||||
@ hw4_medium_tests
|
||||
@ hw4_hard_tests
|
||||
@ hw4_old_student_tests
|
||||
@ struct_tests
|
||||
@ fptr_tests
|
||||
@ new_tests
|
||||
@ regalloc_challenge_tests
|
||||
|
||||
|
||||
|
||||
let oat_correctness_tests =
|
||||
oat_regalloc_quality_tests
|
||||
@ hw4_globals_tests
|
||||
@ greedy_is_good_tests
|
||||
|
||||
let dce_opt_tests =
|
||||
[ "llprograms/analysis1_cf_opt.ll", "llprograms/analysis1_dce_opt.ll"
|
||||
; "llprograms/analysis2_cf_opt.ll", "llprograms/analysis2_dce_opt.ll"
|
||||
; "llprograms/analysis3_cf_opt.ll", "llprograms/analysis3_dce_opt.ll"
|
||||
; "llprograms/analysis4_cf_opt.ll", "llprograms/analysis4_dce_opt.ll"
|
||||
; "llprograms/analysis5_cf_opt.ll", "llprograms/analysis5_dce_opt.ll"
|
||||
; "llprograms/analysis6_cf_opt.ll", "llprograms/analysis6_dce_opt.ll"
|
||||
; "llprograms/analysis7_cf_opt.ll", "llprograms/analysis7_dce_opt.ll"
|
||||
; "llprograms/analysis8_cf_opt.ll", "llprograms/analysis8_dce_opt.ll"
|
||||
; "llprograms/analysis9_cf_opt.ll", "llprograms/analysis9_dce_opt.ll"
|
||||
; "llprograms/analysis10_cf_opt.ll", "llprograms/analysis10_dce_opt.ll"
|
||||
; "llprograms/analysis11_cf_opt.ll", "llprograms/analysis11_dce_opt.ll"
|
||||
; "llprograms/analysis12_cf_opt.ll", "llprograms/analysis12_dce_opt.ll"
|
||||
; "llprograms/analysis13_cf_opt.ll", "llprograms/analysis13_dce_opt.ll"
|
||||
; "llprograms/analysis14_cf_opt.ll", "llprograms/analysis14_dce_opt.ll"
|
||||
; "llprograms/analysis15_cf_opt.ll", "llprograms/analysis15_dce_opt.ll"
|
||||
; "llprograms/analysis16_cf_opt.ll", "llprograms/analysis16_dce_opt.ll"
|
||||
; "llprograms/analysis17_cf_opt.ll", "llprograms/analysis17_dce_opt.ll"
|
||||
; "llprograms/analysis18_cf_opt.ll", "llprograms/analysis18_dce_opt.ll"
|
||||
; "llprograms/analysis19_cf_opt.ll", "llprograms/analysis19_dce_opt.ll"
|
||||
]
|
||||
|
||||
let dce_opt_tests =
|
||||
[ "llprograms/analysis1_cf_opt.ll", "llprograms/analysis1_dce_opt.ll"
|
||||
; "llprograms/analysis2_cf_opt.ll", "llprograms/analysis2_dce_opt.ll"
|
||||
; "llprograms/analysis3_cf_opt.ll", "llprograms/analysis3_dce_opt.ll"
|
||||
; "llprograms/analysis4_cf_opt.ll", "llprograms/analysis4_dce_opt.ll"
|
||||
; "llprograms/analysis5_cf_opt.ll", "llprograms/analysis5_dce_opt.ll"
|
||||
; "llprograms/analysis6_cf_opt.ll", "llprograms/analysis6_dce_opt.ll"
|
||||
; "llprograms/analysis7_cf_opt.ll", "llprograms/analysis7_dce_opt.ll"
|
||||
; "llprograms/analysis8_cf_opt.ll", "llprograms/analysis8_dce_opt.ll"
|
||||
; "llprograms/analysis9_cf_opt.ll", "llprograms/analysis9_dce_opt.ll"
|
||||
; "llprograms/analysis10_cf_opt.ll", "llprograms/analysis10_dce_opt.ll"
|
||||
; "llprograms/analysis11_cf_opt.ll", "llprograms/analysis11_dce_opt.ll"
|
||||
; "llprograms/analysis12_cf_opt.ll", "llprograms/analysis12_dce_opt.ll"
|
||||
]
|
||||
|
||||
let constprop_opt_tests =
|
||||
[ "llprograms/analysis1.ll", "llprograms/analysis1_cf_opt.ll"
|
||||
; "llprograms/analysis2.ll", "llprograms/analysis2_cf_opt.ll"
|
||||
; "llprograms/analysis3.ll", "llprograms/analysis3_cf_opt.ll"
|
||||
; "llprograms/analysis4.ll", "llprograms/analysis4_cf_opt.ll"
|
||||
; "llprograms/analysis5.ll", "llprograms/analysis5_cf_opt.ll"
|
||||
; "llprograms/analysis6.ll", "llprograms/analysis6_cf_opt.ll"
|
||||
; "llprograms/analysis7.ll", "llprograms/analysis7_cf_opt.ll"
|
||||
; "llprograms/analysis8.ll", "llprograms/analysis8_cf_opt.ll"
|
||||
; "llprograms/analysis9.ll", "llprograms/analysis9_cf_opt.ll"
|
||||
; "llprograms/analysis10.ll", "llprograms/analysis10_cf_opt.ll"
|
||||
; "llprograms/analysis11.ll", "llprograms/analysis11_cf_opt.ll"
|
||||
; "llprograms/analysis12.ll", "llprograms/analysis12_cf_opt.ll"
|
||||
; "llprograms/analysis13.ll", "llprograms/analysis13_cf_opt.ll"
|
||||
; "llprograms/analysis14.ll", "llprograms/analysis14_cf_opt.ll"
|
||||
; "llprograms/analysis15.ll", "llprograms/analysis15_cf_opt.ll"
|
||||
; "llprograms/analysis16.ll", "llprograms/analysis16_cf_opt.ll"
|
||||
; "llprograms/analysis17.ll", "llprograms/analysis17_cf_opt.ll"
|
||||
; "llprograms/analysis18.ll", "llprograms/analysis18_cf_opt.ll"
|
||||
; "llprograms/analysis19.ll", "llprograms/analysis19_cf_opt.ll"
|
||||
]
|
||||
|
||||
|
||||
|
||||
let constprop_opt_tests =
|
||||
[ "llprograms/analysis1.ll", "llprograms/analysis1_cf_opt.ll"
|
||||
; "llprograms/analysis2.ll", "llprograms/analysis2_cf_opt.ll"
|
||||
; "llprograms/analysis3.ll", "llprograms/analysis3_cf_opt.ll"
|
||||
; "llprograms/analysis4.ll", "llprograms/analysis4_cf_opt.ll"
|
||||
; "llprograms/analysis5.ll", "llprograms/analysis5_cf_opt.ll"
|
||||
; "llprograms/analysis6.ll", "llprograms/analysis6_cf_opt.ll"
|
||||
; "llprograms/analysis7.ll", "llprograms/analysis7_cf_opt.ll"
|
||||
; "llprograms/analysis8.ll", "llprograms/analysis8_cf_opt.ll"
|
||||
; "llprograms/analysis9.ll", "llprograms/analysis9_cf_opt.ll"
|
||||
; "llprograms/analysis10.ll", "llprograms/analysis10_cf_opt.ll"
|
||||
; "llprograms/analysis11.ll", "llprograms/analysis11_cf_opt.ll"
|
||||
; "llprograms/analysis12.ll", "llprograms/analysis12_cf_opt.ll"
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
let tests : suite =
|
||||
[
|
||||
GradedTest("solver / liveness analysis tests", 13, dfa_liveness_file liveness_analysis_tests);
|
||||
GradedTest("alias analysis tests", 13, dfa_alias_file alias_analysis_tests);
|
||||
GradedTest("constprop analysis tests", 18, dfa_constprop_file constprop_analysis_tests);
|
||||
GradedTest("dce optimization tests", 13, opt_dce_file dce_opt_tests);
|
||||
GradedTest("constprop optimization tests", 13, opt_constfold_file constprop_opt_tests);
|
||||
|
||||
]
|
||||
(* Uncomment the following code if you are doing the optional Task IV Register Allocation *)
|
||||
(*
|
||||
@
|
||||
[
|
||||
Test("ll regalloc correctness tests", pass_all_executed_ll_file ll_tests);
|
||||
Test("oat regalloc correctness tests", pass_all_executed_oat_file (oat_correctness_tests @ regalloc_challenge_tests));
|
||||
GradedTest("oat regalloc quality tests", 0, quality_oat oat_regalloc_quality_tests);
|
||||
]
|
||||
*)
|
||||
|
||||
|
||||
|
||||
let graded_tests : suite =
|
||||
timeout_suite 10 tests
|
||||
|
||||
|
||||
let tests : suite =
|
||||
[
|
||||
GradedTest("solver / liveness analysis tests", 10, dfa_liveness_file liveness_analysis_tests);
|
||||
GradedTest("alias analysis tests", 10, dfa_alias_file alias_analysis_tests);
|
||||
GradedTest("dce optimization tests", 10, opt_dce_file dce_opt_tests);
|
||||
GradedTest("constprop analysis tests", 15, dfa_constprop_file constprop_analysis_tests);
|
||||
GradedTest("constprop optimization tests", 10, opt_constfold_file constprop_opt_tests);
|
||||
Test("ll regalloc correctness tests", pass_all_executed_ll_file ll_tests);
|
||||
Test("oat regalloc correctness tests", pass_all_executed_oat_file (oat_correctness_tests @ regalloc_challenge_tests));
|
||||
GradedTest("oat regalloc quality tests", 35, quality_oat oat_regalloc_quality_tests);
|
||||
|
||||
|
||||
]
|
||||
|
||||
let manual_tests : suite = [
|
||||
GradedTest ("Submitted Test Case", 5,
|
||||
[("manually", assert_eq true false)]
|
||||
)
|
||||
; GradedTest ("Performance Comparison", 5,
|
||||
[("manually", assert_eq true false)]
|
||||
)
|
||||
]
|
||||
|
||||
let graded_tests : suite =
|
||||
tests @
|
||||
manual_tests
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
open Util.Assert
|
||||
|
||||
(* These tests are provided by you -- they will be graded manually *)
|
||||
|
||||
(* You should also add additional test cases here to help you *)
|
||||
(* debug your program. *)
|
||||
|
||||
let provided_tests : suite = [
|
||||
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue