File: runTest.ml

package info (click to toggle)
herdtools7 7.58-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 19,732 kB
  • sloc: ml: 128,583; ansic: 3,827; makefile: 670; python: 407; sh: 212; awk: 14
file content (95 lines) | stat: -rw-r--r-- 3,547 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
(****************************************************************************)
(*                           the diy toolsuite                              *)
(*                                                                          *)
(* Jade Alglave, University College London, UK.                             *)
(* Luc Maranget, INRIA Paris-Rocquencourt, France.                          *)
(*                                                                          *)
(* Copyright 2023-present Institut National de Recherche en Informatique et *)
(* en Automatique and the authors. All rights reserved.                     *)
(*                                                                          *)
(* This software is governed by the CeCILL-B license under French law and   *)
(* abiding by the rules of distribution of free software. You can use,      *)
(* modify and/ or redistribute the software under the terms of the CeCILL-B *)
(* license as circulated by CEA, CNRS and INRIA at the following URL        *)
(* "http://www.cecill.info". We also give a copy in LICENSE.txt.            *)
(****************************************************************************)

module type Config = sig
  val model : Model.t option
  val archcheck : bool
  val through : Model.through
  val strictskip : bool
  val cycles : StringSet.t
  val bell_model_info : (string * BellModel.info) option
  val macros : string option
  val check_name : string -> bool
  val check_rename : string -> string option
  val libfind : string -> string
  include GenParser.Config
  include Top_herd.CommonConfig
  include Sem.Config

  val statelessrc11 : bool
  val dumpallfaults : bool
  val byte : MachSize.Tag.t
  val sve_vector_length : int
  val sme_vector_length : int
end

type runfun =
  DirtyBit.t option ->
  float (* start time *) ->
  string (* file name *) ->
  in_channel (* source channel *) ->
  TestHash.env ->
  Splitter.result ->
  TestHash.env

module Make
    (S:Sem.Semantics)
    (P:sig
      type pseudo
      val parse : in_channel -> Splitter.result ->  pseudo MiscParser.t
    end with type pseudo = S.A.pseudo)
    (M:XXXMem.S with module S = S)
    (C:Config) =
  struct
    module T = Test_herd.Make(S.A)
     let run dirty start_time filename chan env splitted =
      try
         let parsed = P.parse chan splitted in
        let name = splitted.Splitter.name in
        let hash = MiscParser.get_hash parsed in
        let env = match hash with
        | None -> env
        | Some hash ->
            TestHash.check_env env name.Name.name filename hash in
        let test = T.build name parsed in
(* Compute basic machine size *)
        let sz =
          if S.A.is_mixed then begin match C.byte with
          | MachSize.Tag.Size sz -> sz
          | MachSize.Tag.Auto ->
              let szs = test.Test_herd.access_size in
              match szs with
              | [] -> MachSize.Byte
              | [sz] -> MachSize.pred sz
              | sz::_ -> sz (* Do not split the smallest size involved *)
          end else begin
            (* Cannot that easily check the test not to mix sizes,
               as there are several locations in test that may be of
               different sizes *)
            MachSize.Byte
          end in
(* And run test *)
        let module T =
          Top_herd.Make
            (struct
              include C
              let byte = sz
              let dirty = dirty
            end)(M) in
        T.run start_time test ;
        env
      with TestHash.Seen -> env
  end