11185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov(* RUN: rm -rf %t.builddir 21185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov * RUN: mkdir -p %t.builddir 31185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov * RUN: cp %s %t.builddir 41185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov * RUN: %ocamlopt -warn-error A llvm.cmxa llvm_vectorize.cmxa llvm_target.cmxa %t.builddir/vectorize_opts.ml -o %t 51185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov * RUN: %t %t.bc 61185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov * XFAIL: vg_leak 71185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov *) 81185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 91185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov(* Note: It takes several seconds for ocamlopt to link an executable with 101185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov libLLVMCore.a, so it's better to write a big test than a bunch of 111185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov little ones. *) 121185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 131185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovopen Llvm 141185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovopen Llvm_vectorize 151185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovopen Llvm_target 161185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 171185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet context = global_context () 181185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet void_type = Llvm.void_type context 191185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 201185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov(* Tiny unit test framework - really just to help find which line is busted *) 211185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet print_checkpoints = false 221185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 231185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet suite name f = 241185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov if print_checkpoints then 251185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov prerr_endline (name ^ ":"); 261185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov f () 271185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 281185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 291185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov(*===-- Fixture -----------------------------------------------------------===*) 301185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 311185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet filename = Sys.argv.(1) 321185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet m = create_module context filename 331185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 341185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 351185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov(*===-- Transforms --------------------------------------------------------===*) 361185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 371185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet test_transforms () = 381185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov let (++) x f = ignore (f x); x in 391185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 401185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov let fty = function_type void_type [| |] in 411185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov let fn = define_function "fn" fty m in 421185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov ignore (build_ret_void (builder_at_end context (entry_block fn))); 431185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 441185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov ignore (PassManager.create () 451185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov ++ add_bb_vectorize 461185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov ++ add_loop_vectorize 471185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov ++ add_slp_vectorize 481185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov ++ PassManager.run_module m 4926f3bd89660e46a76a3b0267b23b00d917a45404Peter Zotov ++ PassManager.dispose) 501185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 511185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 521185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov(*===-- Driver ------------------------------------------------------------===*) 531185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov 541185582dfd542883194d262c5bf92b16e1e037c2Peter Zotovlet _ = 551185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov suite "transforms" test_transforms; 561185582dfd542883194d262c5bf92b16e1e037c2Peter Zotov dispose_module m 57